7 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/rootlogon.C");
8 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/basiclibs.C");
12 TFile*
f =
new TFile(
"cluster_emc.root");
13 TTree *
t=(TTree *) f->Get(
"pndsim") ;
15 t->SetBranchAddress(
"EmcBump",&bump_array);
17 TFile*
fsim =
new TFile(
"sim_emc.root");
18 TTree *
tsim=(TTree *) fsim->Get(
"pndsim") ;
20 tsim->SetBranchAddress(
"MCTrack",&mctrack_array);
22 TFile*
fpar =
new TFile(
"simparams.root");
23 fpar->Get(
"FairBaseParSet");
30 TH1F *
h_MC_angle=
new TH1F(
"h_MC_angle",
"MC truth: opening angle of #pi^{0}",200,0.,15.);
31 TH1F *
h_angle=
new TH1F(
"h_angle",
"reconstructed opening angle of #pi^{0}",200,0.,15.);
32 TH1F *
h_egamma=
new TH1F(
"h_egamma",
"Energy of #gamma 's (MC truth)",100,0.0,10.0);
33 TH1F *
h_ebump=
new TH1F(
"h_ebump",
"Bump energy",100,0.0,10.0);
34 TH1F *
h_MC=
new TH1F(
"h_MC",
"Invariant mass",100,0.0,0.3);
35 TH1F *
h_MC_mass=
new TH1F(
"h_MC_mass",
"Invariant mass MC",100,0.0,0.3);
37 TH2F *
h_energy_vs_angle_MC=
new TH2F(
"h_energy_vs_angle_MC",
"Energy vs. opening angle", 100,0.0,10.0,100,0.,15.0);
45 cout<<
"Number of events : "<<t->GetEntriesFast()<<endl;
46 for (Int_t j=0; j< t->GetEntriesFast(); j++)
49 for (Int_t
i=0;
i<bump_array->GetEntriesFast();
i++)
52 bump_energy1=bump1->
energy();
53 if (bump_energy1<threshold)
continue;
54 h_ebump->Fill(bump_energy1);
57 for (Int_t k=
i+1; k<bump_array->GetEntriesFast(); k++)
60 bump_energy2=bump2->
energy();
61 if (bump_energy2<threshold)
continue;
63 double alpha=v1.Angle(v2);
64 double invMass=
sqrt(2*bump_energy1*bump_energy2*(1-
cos(alpha)));
65 h_angle->Fill(alpha*TMath::RadToDeg());
73 for (Int_t j=0; j< t->GetEntriesFast(); j++)
77 for (Int_t
i=0;
i<mctrack_array->GetEntriesFast();
i++)
84 if (mc_vertex1.Mag()>2.)
continue;
85 h_egamma->Fill(mc_momentum1.Mag());
87 for (Int_t k=
i+1; k<mctrack_array->GetEntriesFast(); k++)
94 if (mc_vertex2.Mag()>2.)
continue;
95 double alphaMC=mc_momentum1.Angle(mc_momentum2);
96 double invMassMC=
sqrt(2*mc_momentum1.Mag()*mc_momentum2.Mag()*(1-
cos(alphaMC)));
97 h_MC_angle->Fill(alphaMC*TMath::RadToDeg());
98 h_MC_mass->Fill(invMassMC);
100 h_energy_vs_angle_MC->Fill(pi0_momentum.Mag(),alphaMC*TMath::RadToDeg());
108 TCanvas*
c1 =
new TCanvas(
"c1",
"c1", 100, 100, 800, 800);
111 h_MC_angle->SetTitle(
"MC truth: opening angle of #pi^{0}");
112 h_MC_angle->GetXaxis()->SetTitle(
"Opening angle, degree");
116 h_angle->SetTitle(
"reconstructed opening angle of #pi^{0}");
117 h_angle->GetXaxis()->SetTitle(
"Opening angle, degree");
120 TCanvas*
c2 =
new TCanvas(
"c2",
"c2", 100, 100, 800, 800);
123 h_egamma->SetTitle(
"Energy of #gamma 's (MC truth)");
124 h_egamma->GetXaxis()->SetTitle(
"Energy, GeV");
128 h_ebump->SetTitle(
"Energy of bumps");
129 h_ebump->GetXaxis()->SetTitle(
"Energy, GeV");
132 TCanvas*
c3 =
new TCanvas(
"c3",
"c3", 100, 100, 800, 800);
135 h_MC->SetTitle(
"Invariant mass");
136 h_MC->GetXaxis()->SetTitle(
"M, GeV");
140 h_MC_mass->SetTitle(
"Invariant mass MC");
141 h_MC_mass->GetXaxis()->SetTitle(
"M, GeV");
144 TCanvas*
c4 =
new TCanvas(
"c4",
"c4", 100, 100, 800, 800);
145 h_energy_vs_angle_MC->SetTitle(
"Energy vs. opening angle (MC Truth)");
146 h_energy_vs_angle_MC->GetXaxis()->SetTitle(
"Energy, GeV");
147 h_energy_vs_angle_MC->GetYaxis()->SetTitle(
"Angle, degree");
148 h_energy_vs_angle_MC->Draw();
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sqrt(const F32vec4 &a)
TH2F * h_energy_vs_angle_MC
TVector3 GetMomentum() const
virtual Double_t energy() const
TClonesArray * bump_array
TVector3 GetStartVertex() const
TClonesArray * mctrack_array
static PndEmcMapper * Instance()
represents a reconstructed (splitted) emc cluster