7 #include "TStopwatch.h"
12 #include "TClonesArray.h"
24 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
26 gSystem->Load(
"libHyp");
27 gSystem->Load(
"libHypGe");
33 TString CompleteFilename =
"/data/work/kpha1/steinen/CrystalsOnly/TripleBall40Offset20STTCrystalsOnly_0.01MeV_10000000Evts.root";
34 TFile*
g =
new TFile(CompleteFilename);
37 TString Path = getenv(
"SIMDATADIR");
38 TString outfile= Path+
"/CrystalsOnly/Ana/AnaTripleBall40Offset20STTCrystalsOnly_0.01MeV_10000000Evts";
42 txtfileName +=
".txt";
43 TFile*
fi =
new TFile(outfile,
"RECREATE");
46 txtfile.open(txtfileName);
47 txtfile <<
"File read:" << CompleteFilename << endl;
49 TTree *
b=(TTree *) g->Get(
"pndsim") ;
50 TClonesArray*
hit_bar=
new TClonesArray(
"PndHypGePoint");
51 b->SetBranchAddress(
"HypGePoint",&hit_bar);
52 TClonesArray*
mc_bar=
new TClonesArray(
"PndMCTrack");
53 b->SetBranchAddress(
"MCTrack",&mc_bar);
56 TString Name =
"#Theta detector distance correlation;#Theta [#circ];Distance [cm]";
57 TH2D* hThetaR =
new TH2D(
"hThetaR",Name.Data(),180,90,180,250,15,40);
59 TH2D* hRing1 =
new TH2D(
"hRing1",
"#Theta detector ring 1 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
60 TH2D* hRing2 =
new TH2D(
"hRing2",
"#Theta detector ring 2 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
61 TH2D* hRing3 =
new TH2D(
"hRing3",
"#Theta detector ring 3 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
62 TH2D* hRing4 =
new TH2D(
"hRing4",
"#Theta detector ring 4 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
63 TH2D* hRing5 =
new TH2D(
"hRing5",
"#Theta detector ring 5 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
64 TH2D* hRing6 =
new TH2D(
"hRing6",
"#Theta detector ring 6 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
65 TH2D* hRing7 =
new TH2D(
"hRing7",
"#Theta detector ring 7 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
66 TH2D* hRing8 =
new TH2D(
"hRing8",
"#Theta detector ring 8 distance correlation;#Theta [#circ];Distance [cm]",180,90,180,250,15,40);
68 TH1D* hRing1Theta =
new TH1D(
"hRing1Theta",
"#Theta distribution of ring 1 ;#Theta [#circ];Counts",180,90,180);
69 TH1D* hRing2Theta =
new TH1D(
"hRing2Theta",
"#Theta distribution of ring 2 ;#Theta [#circ];Counts",180,90,180);
70 TH1D* hRing3Theta =
new TH1D(
"hRing3Theta",
"#Theta distribution of ring 3 ;#Theta [#circ];Counts",180,90,180);
71 TH1D* hRing4Theta =
new TH1D(
"hRing4Theta",
"#Theta distribution of ring 4 ;#Theta [#circ];Counts",180,90,180);
72 TH1D* hRing5Theta =
new TH1D(
"hRing5Theta",
"#Theta distribution of ring 5 ;#Theta [#circ];Counts",180,90,180);
73 TH1D* hRing6Theta =
new TH1D(
"hRing6Theta",
"#Theta distribution of ring 6 ;#Theta [#circ];Counts",180,90,180);
74 TH1D* hRing7Theta =
new TH1D(
"hRing7Theta",
"#Theta distribution of ring 7 ;#Theta [#circ];Counts",180,90,180);
75 TH1D* hRing8Theta =
new TH1D(
"hRing8Theta",
"#Theta distribution of ring 8 ;#Theta [#circ];Counts",180,90,180);
77 TH1D* hRing1Distance =
new TH1D(
"hRing1Distance",
"Crystal distance of ring 1 ;#Theta [#circ];Counts",250,15,40);
78 TH1D* hRing2Distance =
new TH1D(
"hRing2Distance",
"Crystal distance of ring 2 ;#Theta [#circ];Counts",250,15,40);
79 TH1D* hRing3Distance =
new TH1D(
"hRing3Distance",
"Crystal distance of ring 3 ;#Theta [#circ];Counts",250,15,40);
80 TH1D* hRing4Distance =
new TH1D(
"hRing4Distance",
"Crystal distance of ring 4 ;#Theta [#circ];Counts",250,15,40);
81 TH1D* hRing5Distance =
new TH1D(
"hRing5Distance",
"Crystal distance of ring 5 ;#Theta [#circ];Counts",250,15,40);
82 TH1D* hRing6Distance =
new TH1D(
"hRing6Distance",
"Crystal distance of ring 6 ;#Theta [#circ];Counts",250,15,40);
83 TH1D* hRing7Distance =
new TH1D(
"hRing7Distance",
"Crystal distance of ring 7 ;#Theta [#circ];Counts",250,15,40);
84 TH1D* hRing8Distance =
new TH1D(
"hRing8Distance",
"Crystal distance of ring 8 ;#Theta [#circ];Counts",250,15,40);
96 set<int> SetOfCrystalHit;
97 set<int>::iterator it;
99 Int_t
nEvents = b->GetEntriesFast()/100;
100 cout<<
"Number of Simulated Events: "<<nEvents<<endl;
101 txtfile<<
"Number of Simulated Events: "<<nEvents<<endl;
104 for (Int_t k=0; k<
nEvents; k++)
107 if (!((k*1000)% nEvents))
112 for (Int_t
i=0;
i<hit_bar->GetEntriesFast();
i++)
117 Hit.SetX(hitgam->
GetX());
118 Hit.SetY(hitgam->
GetY());
119 Hit.SetZ(hitgam->
GetZ()+55);
122 hThetaR->Fill(theta, Hit.Mag());
128 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
132 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
136 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
140 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
144 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
148 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
152 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
156 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
160 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
164 hRing4->Fill(theta, Hit.Mag()); hRing4Theta->Fill(theta); hRing4Distance->Fill(Hit.Mag());
168 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
172 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
176 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
180 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
184 hRing3->Fill(theta, Hit.Mag()); hRing3Theta->Fill(theta); hRing3Distance->Fill(Hit.Mag());
188 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
192 hRing2->Fill(theta, Hit.Mag()); hRing2Theta->Fill(theta); hRing2Distance->Fill(Hit.Mag());
196 hRing2->Fill(theta, Hit.Mag()); hRing2Theta->Fill(theta); hRing2Distance->Fill(Hit.Mag());
200 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
204 hRing3->Fill(theta, Hit.Mag()); hRing3Theta->Fill(theta); hRing3Distance->Fill(Hit.Mag());
208 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
212 hRing4->Fill(theta, Hit.Mag()); hRing4Theta->Fill(theta); hRing4Distance->Fill(Hit.Mag());
216 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
220 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
224 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
228 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
232 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
236 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
240 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
244 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
248 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
252 hRing7->Fill(theta, Hit.Mag()); hRing7Theta->Fill(theta); hRing7Distance->Fill(Hit.Mag());
256 hRing6->Fill(theta, Hit.Mag()); hRing6Theta->Fill(theta); hRing6Distance->Fill(Hit.Mag());
260 hRing4->Fill(theta, Hit.Mag()); hRing4Theta->Fill(theta); hRing4Distance->Fill(Hit.Mag());
264 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
268 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
272 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
276 hRing3->Fill(theta, Hit.Mag()); hRing3Theta->Fill(theta); hRing3Distance->Fill(Hit.Mag());
280 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
284 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
288 hRing2->Fill(theta, Hit.Mag()); hRing2Theta->Fill(theta); hRing2Distance->Fill(Hit.Mag());
292 hRing2->Fill(theta, Hit.Mag()); hRing2Theta->Fill(theta); hRing2Distance->Fill(Hit.Mag());
296 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
300 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
304 hRing3->Fill(theta, Hit.Mag()); hRing3Theta->Fill(theta); hRing3Distance->Fill(Hit.Mag());
308 hRing4->Fill(theta, Hit.Mag()); hRing4Theta->Fill(theta); hRing4Distance->Fill(Hit.Mag());
312 hRing1->Fill(theta, Hit.Mag()); hRing1Theta->Fill(theta); hRing1Distance->Fill(Hit.Mag());
316 hRing5->Fill(theta, Hit.Mag()); hRing5Theta->Fill(theta); hRing5Distance->Fill(Hit.Mag());
325 cout <<
"event loop finished"<< endl;
344 hRing1Theta->Write();
345 hRing2Theta->Write();
346 hRing3Theta->Write();
347 hRing4Theta->Write();
348 hRing5Theta->Write();
349 hRing6Theta->Write();
350 hRing7Theta->Write();
351 hRing8Theta->Write();
353 hRing1Distance->Write();
354 hRing2Distance->Write();
355 hRing3Distance->Write();
356 hRing4Distance->Write();
357 hRing5Distance->Write();
358 hRing6Distance->Write();
359 hRing7Distance->Write();
360 hRing8Distance->Write();
371 cout << endl << endl;
372 cout <<
"Macro finished succesfully." << endl;
373 cout <<
"Output file is " << outfile << endl;
374 cout <<
"Parameter file is " << txtfileName << endl;
375 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
TString CompleteFilename(TString mu, TString Q, TString Psf)
Int_t GetDetectorID() const
int AnalyseThetaRadiusCorrelation()