Evio2rootAnalysis limits.C
Jump to navigation
Jump to search
#include <math.h> void evio2rootAnalysis_Limits() { double theta,phi,PhiLimit; double thetaWire,phiWire,vector; double length; int gpart; int gpid[20]; double gpx[20]; double gpy[20]; double gpz[20]; double gx[20],gy[20],gz[20]; Float_t theoryLeft; Float_t theoryRight; int nhits = 0; int dpid[105000]; int mpid[105000]; int mtid[105000]; int otid[105000]; double X[105000]; double Y[105000]; double Z[105000]; int procID[105000]; int sector[105000]; int superlayer[500]; int layer[105000]; int wire[105000]; int dnhits[105000]; TFile *f = new TFile("LH2_0Sol_0Tor_11GeV_0Phi_ShieldOut.root"); TTree *T = (TTree*) f->Get("clas12"); T->GetBranch("GenPart")->GetLeaf("gpart")->SetAddress(&gpart); T->GetBranch("GenPart")->GetLeaf("pid")->SetAddress(gpid); T->GetBranch("GenPart")->GetLeaf("px")->SetAddress(gpx); T->GetBranch("GenPart")->GetLeaf("py")->SetAddress(gpy); T->GetBranch("GenPart")->GetLeaf("pz")->SetAddress(gpz); T->GetBranch("GenPart")->GetLeaf("x")->SetAddress(gx); T->GetBranch("GenPart")->GetLeaf("y")->SetAddress(gy); T->GetBranch("GenPart")->GetLeaf("z")->SetAddress(gz); T->Notify(); T->GetLeaf("theoryLeft")->SetAddress(&theoryLeft); T->GetLeaf("theoryRight")->SetAddress(&theoryRight); T->Notify(); T->GetBranch("Detector")->GetLeaf("nhits")->SetAddress(&nhits); T->GetBranch("Detector")->GetLeaf("dpid")->SetAddress(dpid); T->GetBranch("Detector")->GetLeaf("mpid")->SetAddress(mpid); T->GetBranch("Detector")->GetLeaf("mtid")->SetAddress(mtid); T->GetBranch("Detector")->GetLeaf("otid")->SetAddress(otid); T->GetBranch("Detector")->GetLeaf("X")->SetAddress(X); T->GetBranch("Detector")->GetLeaf("Y")->SetAddress(Y); T->GetBranch("Detector")->GetLeaf("Z")->SetAddress(Z); T->GetBranch("Detector")->GetLeaf("procID")->SetAddress(procID); T->GetBranch("Detector")->GetLeaf("sector")->SetAddress(sector); T->GetBranch("Detector")->GetLeaf("superlayer")->SetAddress(superlayer); T->GetBranch("Detector")->GetLeaf("layer")->SetAddress(layer); T->GetBranch("Detector")->GetLeaf("wire")->SetAddress(wire); T->Notify(); wire_test=1; for(int i = 0; i < 33400; i++) { T->GetEntry(i); for(int k = 0; k < nhits; k++) { vector=X[k]*X[k]+Y[k]*Y[k]+Z[k]*Z[k]; vector=sqrt(vector); theta=acos(Z[k]/vector)*180/3.14159265359; vector=X[k]*X[k]+Y[k]*Y[k]; vector=sqrt(vector); phi=acos(X[k]/vector)*180/3.14159265359; PhiLimit=7.39537e-12*pow(theta,9)-1.81135e-9*pow(theta,8) +1.92315e-7*pow(theta,7)-0.0000116066*pow(theta,6) +0.000438844*pow(theta,5)-0.0108036*pow(theta,4) +0.174341*pow(theta,3)-1.8094*pow(theta,2) +11.4873*pow(theta,1)-8.3604; if(phi<0) PhiLimit=-PhiLimit; if(( phi < 0 && phi < PhiLimit ) || ( phi >= 0 && phi > PhiLimit ) ) //Not Within sector limits of theta and phi { if(superlayer[k]==1 && layer[k]==2 && dpid[k]==11 && mpid[k]==0 && mtid[k]==0 && otid[k]==2 && procID[k]==90 && sector[k]==1) printf("{%.3f , %.3f , %.3f , %i , Event=%i\t hit=%i},",X[k],Y[k],Z[k],wire[k],i,k); } } } }