13 TFile*
f =
new TFile(
"Gem_Test.root");
14 TTree *
t=(TTree *) f->Get(
"pndsim") ;
16 TClonesArray*
hit_array=
new TClonesArray(
"PndGemMCPoint");
17 t->SetBranchAddress(
"GEMPoint",&hit_array);
19 TClonesArray*
mc_array=
new TClonesArray(
"PndMCTrack");
20 t->SetBranchAddress(
"MCTrack",&mc_array);
22 TH2D*
hisxy =
new TH2D(
"hisxy",
"GEM MC Points, xy view",100,-150.,150.,100,-150.,150.);
23 TH2D*
hisrz =
new TH2D(
"hisrz",
"GEM MC Points, rz view",100,0.,300.,100,-150.,150.);
24 TH1D*
hisde =
new TH1D(
"hisde",
"GEM MC Points, Energyloss",100,0.,0.00002);
27 TH1D *hisDisk1Theta =
new TH1D(
"disk1theta",
"Gem Disk 1 pointrate per 6GeV DPM event;#theta;dN/d#theta ",45,0.,45.);
28 TH1D *hisDisk2Theta =
new TH1D(
"disk2theta",
"Gem Disk 2 pointrate per 6GeV DPM event;#theta;dN/d#theta ",45,0.,45.);
29 TH1D *hisDisk3Theta =
new TH1D(
"disk3theta",
"Gem Disk 3 pointrate per 6GeV DPM event;#theta;dN/d#theta ",45,0.,45.);
31 TH2D *histrackrate =
new TH2D(
"trackrate",
"Gem trackrate per 6GeV DPM event;#theta;nPoints ",45,0.,45.,3,1.,4.);
35 std::map<int,int> hitsontrack;
37 int trackno=0,hitcount=0;
38 double scale=1., weight=1.,thetadeg=0.;
40 cout <<
"scale = "<<scale<<endl;
42 for (Int_t j=0; j<
nEvents && j<t->GetEntriesFast(); j++)
45 if(
verbose) cout<<
"Event No "<<j<<endl;
46 for(
int l=0;l<mc_array->GetEntriesFast();l++){
49 for (Int_t
i=0;
i<hit_array->GetEntriesFast();
i++)
51 if(
verbose) cout<<
"Point No "<<
i<<endl;
59 vecs.SetXYZ(hit->GetX(), hit->GetY(), hit->GetZ());
61 hisxy->Fill(vecs.x(),vecs.y());
62 hisrz->Fill(vecs.z(),((vecs.y()>0.)?1.:-1.)*vecs.Perp());
63 hisde->Fill(hit->GetEnergyLoss());
65 detname = hit->GetDetName();
66 thetadeg = vecs.Theta()*TMath::RadToDeg();
67 if(detname .Contains(
"Disk1")){
68 hisDisk1Theta->Fill(thetadeg);
69 }
else if(detname .Contains(
"Disk2")){
70 hisDisk2Theta->Fill(thetadeg);
71 }
else if(detname .Contains(
"Disk3")){
72 hisDisk3Theta->Fill(thetadeg);
74 trackno = hit->GetTrackID();
75 hitsontrack[trackno]++;
78 for(
int k=0;k<mc_array->GetEntriesFast();k++){
81 thetadeg = vecs.Theta()*TMath::RadToDeg();
82 histrackrate->Fill(thetadeg,hitsontrack[k],scale);
86 TCanvas*
can1 =
new TCanvas(
"can1",
"MCHit view in GEM",0,0,800,800);
100 hisDisk1Theta->Scale(scale,
"width");
101 hisDisk1Theta->DrawCopy();
104 hisDisk2Theta->Scale(scale,
"width");
105 hisDisk2Theta->DrawCopy();
108 hisDisk3Theta->Scale(scale,
"width");
109 hisDisk3Theta->DrawCopy();
116 can1->Print(
"outAnaGemSim.png");
125 cout << endl << endl;
126 cout <<
"Macro finished succesfully." << endl;
129 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
TVector3 GetMomentum() const