8 FairRunAna *
fRun=
new FairRunAna();
9 fRun->SetInputFile(
"sim_emc.root");
10 fRun->SetOutputFile(
"dummy_out.root");
12 FairRuntimeDb*
rtdb = fRun->GetRuntimeDb();
13 FairParRootFileIo*
parInput1 =
new FairParRootFileIo();
14 parInput1->open(
"simparams.root");
16 TString emcAsciiPar = gSystem->Getenv(
"VMCWORKDIR");
17 emcAsciiPar +=
"/macro/params/";
18 emcAsciiPar +=
"emc.par";
20 FairParAsciiFileIo*
parInput2 =
new FairParAsciiFileIo();
21 parInput2->open(emcAsciiPar.Data(),
"in");
23 rtdb->setFirstInput(parInput1);
24 rtdb->setSecondInput(parInput2);
30 std::cout<<
""<<std::endl;
33 TFile*
f =
new TFile(
"full_emc.root");
34 TTree *
t=(TTree *) f->Get(
"pndsim") ;
36 TClonesArray*
cluster_array=
new TClonesArray(
"PndEmcCluster");
37 t->SetBranchAddress(
"EmcCluster",&cluster_array);
38 TClonesArray*
digi_array=
new TClonesArray(
"PndEmcDigi");
39 t->SetBranchAddress(
"EmcDigi",&digi_array);
41 TFile*
fsim =
new TFile(
"sim_emc.root");
42 TTree *
tsim=(TTree *) fsim->Get(
"pndsim") ;
45 tsim->SetBranchAddress(
"MCTrack",&mctrack_array);
50 double cluster_energy_calibrated;
57 TH1F *ht=
new TH1F(
"ht",
"Theta distribution",200,0.,180);
58 TH1F *
h1=
new TH1F(
"h1",
"Theta difference",200,-5.,5.);
59 TH1F *
h2=
new TH1F(
"h2",
"Phi difference",200,-5.,5.);
60 TH1F *
h3=
new TH1F(
"h3",
"Cluster energy",100,0.85,1.05);
61 TH2F *
h2theta=
new TH2F(
"h2theta",
"Theta difference",200,0.,180.,200,-5.,5.);
62 TH2F *
h2phi=
new TH2F(
"h2phi",
"Phi difference",200,0.,180.,200,-5.,5.);
63 TH1F *
hE1=
new TH1F(
"hE1",
"E1",200,0.,1.05);
64 TH1F *
hE1E9=
new TH1F(
"hE1E9",
"E1 / E9",200,0.,1.05);
65 TH1F *
hE9E25=
new TH1F(
"hE9E25",
"E9 / E25",200,0.,1.05);
74 for (Int_t j=0; j< t->GetEntriesFast(); j++)
77 for (Int_t
i=0;
i<cluster_array->GetEntriesFast();
i++)
80 cluster_energy=cluster->
energy();
81 cluster_energy_calibrated=calibrator1->
Energy(cluster);
83 h3->Fill(cluster_energy_calibrated);
86 hE1E9->Fill(esum.
E1E9());
87 hE9E25->Fill(esum.
E9E25());
88 TVector3 cluster_pos=cluster->
where();
89 ht->Fill(cluster_pos.Theta()*180./3.1415);
93 for (Int_t j=0; j< t->GetEntriesFast(); j++)
100 theta=photon_momentum.Theta();
101 phi=photon_momentum.Phi();
110 for (Int_t
i=0;
i<cluster_array->GetEntriesFast();
i++)
113 cluster_energy=cluster->
energy();
114 if (cluster_energy>max_energy)
117 TVector3 cluster_pos=cluster->
where();
118 cluster_theta=cluster_pos.Theta();
119 cluster_phi=cluster_pos.Phi();
127 h1->Fill(theta_diff);
128 h2theta->Fill(theta*TMath::RadToDeg(),theta_diff);
132 h2phi->Fill(theta*TMath::RadToDeg(),phi_diff);
138 Double_t thetaCheckMean=h1->GetMean();
139 Double_t thetaCheckRMS=h1->GetRMS();
141 if (
TMath::Abs(thetaCheckMean)<0.1 && thetaCheckRMS<0.7 && thetaCheckRMS>0.1)
143 cout<<
"\n Theta Diff - ACCEPTABLE "<<endl;
147 cout<<
" \n Theta Diff - SOMETHING WENT WRONG "<<endl;
148 cout<<
" Theta mean = " << thetaCheckMean << endl;
149 cout<<
" Theta RMS = " << thetaCheckRMS << endl;
153 Double_t phiCheckMean=h2->GetMean();
156 if (
TMath::Abs(phiCheckMean)<0.1 && phiCheckRMS<1.0 && phiCheckRMS>0.2)
158 cout<<
"\n Phi Diff - ACCEPTABLE "<<endl;
162 cout<<
" \n Phi Diff - SOMETHING WENT WRONG "<<endl;
163 cout<<
" Phi mean = " << phiCheckMean << endl;
164 cout<<
" Phi RMS = " << phiCheckRMS << endl;
168 Double_t energyCheckMean=h3->GetMean();
169 Double_t energyCheckRMS=h3->GetRMS();
171 if (energyCheckMean<1.02 &&
TMath::Abs(1.0-energyCheckMean)<0.06 && energyCheckRMS<0.04 && energyCheckRMS>0.01)
173 cout<<
"\n Cluster Energy - ACCEPTABLE "<<endl;
177 cout<<
" \n Cluster Energy - SOMETHING WENT WRONG "<<endl;
178 cout<<
" Energy mean = " << energyCheckMean << endl;
179 cout<<
" Energy RMS = " << energyCheckRMS << endl;
183 if (ht->GetBinContent(15)==0)
186 cout <<
"\n FW endcap absent - BAD" << endl;
190 cout <<
" Test passed" << endl;
191 cout <<
" All ok " << endl;
193 cout <<
" Test Failed" << endl;
194 cout <<
" Not Ok " << endl;
TClonesArray * digi_array
TVector3 GetMomentum() const
virtual Double_t Energy(PndEmcCluster *clust, Int_t pid=22)=0
virtual Double_t E1() const
TClonesArray * cluster_array
static PndEmcAbsClusterCalibrator * MakeEmcClusterCalibrator(Int_t method, Int_t version=1)
FairParAsciiFileIo * parInput2
a cluster (group of neighboring crystals) of hit emc crystals
FairParRootFileIo * parInput1
Int_t NumberOfDigis() const
virtual Double_t E1E9() const
virtual Double_t energy() const
virtual Double_t E9E25() const
TClonesArray * mctrack_array