3 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/basiclibs.C");
5 gSystem->Load(
"libGeoBase");
6 gSystem->Load(
"libParBase");
7 gSystem->Load(
"libBase");
8 gSystem->Load(
"libPndData");
9 gSystem->Load(
"libField");
10 gSystem->Load(
"libGen");
11 gSystem->Load(
"libPassive");
12 gSystem->Load(
"libMvd");
18 gStyle->SetHistFillColor(9);
19 gStyle->SetCanvasColor(0);
20 gStyle->SetLabelSize(0.025,
"X");
21 gStyle->SetLabelSize(0.025,
"Y");
22 gStyle->SetTitleSize(0.03,
"Y");
23 gStyle->SetBarOffset(10);
24 gStyle->SetTitleOffset(1,
"X");
25 gStyle->SetTitleOffset(1.55,
"Y");
26 gStyle->SetTitleSize(0.03,
"X");
27 gStyle->SetPalette(1,0);
28 gStyle->SetOptFit(1111);
30 TCanvas*
can1 =
new TCanvas(
"test",
"Energy in MVD",200,200,1100,800);
31 TCanvas*
can2 =
new TCanvas(
"test2",
"Energy in MVD",200,200,1100,800);
35 TH2D *
hist4 =
new TH2D(
"EnergyLossVsP",
"dE(p) gemittelt ueber alle Hits pro Track",200,0.02,3,200,0,0.0005);
37 TH2D *
hist5 =
new TH2D(
"EnergyLossVsP1",
"dE(p)",200,0.02,3,200,0,0.0005);
39 TH2D *
hist6 =
new TH2D(
"EnergyLossVsP2",
"dE(p)",200,0.02,3,200,0,0.0005);
41 TH2D *
hist7 =
new TH2D(
"specEnergyLossVsP1",
"dE/dx(p) gemittelt ueber alle Hits pro Track",200,0.02,1,200,0,0.0005);
43 TH2D *
hist8 =
new TH2D(
"specEnergyLossVsP2",
"dE/dx(p)",200,0.02,1,200,0,0.0005);
45 TH2D *
hist9 =
new TH2D(
"specEnergyLossVsP3",
"dE/dx(p)",200,0.02,1,200,0,0.0005);
47 TH2D *
hist10 =
new TH2D(
"specEnergyLossVsP4",
"dE/dx(p)",200,0.0,1,200,0,0.0005);
50 TF1 *
bk =
new TF1(
"bk",
"((x-0.05)*1000)/(sqrt(sq(439.71)+(sq((x-0.05)*1000))))",0,1);
51 TF1 *
bk2 =
new TF1(
"bk1",
"((x-0.08)*1000)/(sqrt(sq(439.71)+(sq((x-0.08)*1000))))",0,1);
52 TF1 *
bk3 =
new TF1(
"bk2",
"((x+0.0)*1000)/(sqrt(sq(439.71)+(sq((x+0.0)*1000))))",0,1);
53 TF1 *
dEBBk =
new TF1(
"dEBBk",
"((11*sq(14)*1.5)/(sq(bk)*10000000))*(log((2*1000000*0.511*sq(bk))/(13.5*14))-log(1-sq(bk))-sq(bk))",0,1);
54 dEBBk->SetFillColor(3);
55 TF1 *
dEBBku =
new TF1(
"dEBBku",
".0008+((11*sq(14)*1.5)/(sq(bk1)*10000000))*(log((2*1000000*0.511*sq(bk1))/(13.5*14))-log(1-sq(bk1))-sq(bk1))",0,1);
56 dEBBk->SetFillColor(30);
57 TF1 *
dEBBkl =
new TF1(
"dEBBkl",
"-.00125+((11*sq(14)*1.5)/(sq(bk2)*10000000))*(log((2*1000000*0.511*sq(bk2))/(13.5*14))-log(1-sq(bk2))-sq(bk2))",0,1);
58 dEBBk->SetFillColor(30);
61 TF1 *
bpi =
new TF1(
"bpi",
"(x*1000)/(sqrt(sq(139.57)+(sq(x*1000))))",0,1);
62 TF1 *
dEBBpi =
new TF1(
"dEBBpi",
"((2.5*sq(14)*1.5)/(sq(bpi)*0.313*10000000))*(log((2*1000000*0.511*sq(bpi))/(13.5*14))-log(1-sq(bpi))-sq(bpi))",0,1);
63 TF1 *bpi =
new TF1(
"bpiu",
"((x-0.05)*1000)/(sqrt(sq(139.57)+(sq((x-0.05)*1000))))",0,1);
64 TF1 *
dEBBpiu =
new TF1(
"dEBBpiu",
".0012+((2.5*sq(14)*1.5)/(sq(bpiu)*0.313*10000000))*(log((2*1000000*0.511*sq(bpiu))/(13.5*14))-log(1-sq(bpiu))-sq(bpiu))",0.03,1);
65 TF1 *bpi =
new TF1(
"bpil",
"((x)*1000)/(sqrt(sq(139.57)+(sq((x)*1000))))",0,1);
66 TF1 *
dEBBpil =
new TF1(
"dEBBpil",
"-.0005+((2.5*sq(14)*1.5)/(sq(bpil)*0.313*10000000))*(log((2*1000000*0.511*sq(bpil))/(13.5*14))-log(1-sq(bpil))-sq(bpil))",0,1);
69 TF1 *
bp =
new TF1(
"bp",
"((x-0.05)*1000)/(sqrt(sq(938.26)+(sq(0.05*1000))))",0,1);
70 TF1 *
dEBBp =
new TF1(
"dEBBp",
"((23*sq(14)*1.5)/(sq(bp)*2.133*10000000))*(log((2*1000000*0.511*sq(bp))/(13.5*14))-log(1-sq(bp))-sq(bp))",0,1);
71 TF1 *bp =
new TF1(
"bpu",
"((x-0.1)*1000)/(sqrt(sq(938.26)+(sq((x-0.1)*1000))))",0,1);
72 TF1 *
dEBBpu =
new TF1(
"dEBBpu",
".0005+((23*sq(14)*1.5)/(sq(bpu)*2.133*10000000))*(log((2*1000000*0.511*sq(bpu))/(13.5*14))-log(1-sq(bpu))-sq(bpu))",0.014,1);
73 TF1 *bp =
new TF1(
"bpl",
"((x+0.0)*1000)/(sqrt(sq(938.26)+(sq((x+0.0)*1000))))",0,1);
74 TF1 *
dEBBpl =
new TF1(
"dEBBpl",
"-.0010+((22*sq(14)*1.5)/(sq(bpl)*2.133*10000000))*(log((2*1000000*0.511*sq(bpl))/(13.5*14))-log(1-sq(bpl))-sq(bpl))",0,3);
80 TH1D*
hist1 =
new TH1D(
"specEnergyLoss",
"dE",100,0,0.0004);
81 hist1->SetFillColor(2);
82 TH1D*
hist2 =
new TH1D(
"specEnergyLoss",
"dE1",100,0,0.0004);
83 hist2->SetFillColor(3);
84 TH1D*
hist3 =
new TH1D(
"specEnergyLoss",
"dE2",100,0,0.00040);
85 hist3->SetFillColor(4);
94 TFile*
inFile =
new TFile(
"/data_hilbert/PandaData/tbaldauf/MvdMC_PiKP2_50k.root",
"READ");
95 TTree*
tree = (TTree *)inFile->Get(
"pndsim");
96 TClonesArray*
pointlist=
new TClonesArray(
"PndSdsMCPoint");
97 tree->SetBranchAddress(
"MVDPoint",&pointlist);
98 TClonesArray*
mc_array=
new TClonesArray(
"PndMCTrack");
99 tree->SetBranchAddress(
"MCTrack",&mc_array);
108 Double_t dE0,
dE1,
dE2,
dE3,
pF0,
pF1,
pF2,
pF3,
dEX0,
dEX1,
dEX2,
dEX3;
116 TPad *
p1=
new TPad(
"1",
"1",0,0,0.7,1);
117 TPad *
p2=
new TPad(
"2",
"2",0.7,0,1,1);
123 hist4->SetYTitle(
"dE/GeV");
124 hist4->SetXTitle(
"p/(GeV/c)");
125 hist7->SetYTitle(
"(dE/dx)/(GeV/cm)");
126 hist7->SetXTitle(
"p/(GeV/c)");
127 hist10->SetYTitle(
"(dE/dx)/(GeV/cm)");
128 hist10->SetXTitle(
"p/(GeV/c)");
130 for(
int w=0;w<25;w++)
135 for(
int j=0;j<nEvents && j<tree->GetEntriesFast();j++)
137 t0=0;t1=0;t2=0;dE0=0;dE1=0;dE2=0;dEX0=0;dEX1=0;dEX2=0;pF0=0;pF1=0;pF2=0;
140 for(
int i=0;
i<pointlist->GetEntriesFast();
i++)
143 vecFront=(point->GetX(),point->GetY(),point->GetZ());
150 cout<<
"dx= "<<dx<<endl;
151 cout<<
"P= "<<vecPBack.Mag()<<endl;
152 if(point->GetTrackID()==0)
156 dE0=dE0+(point->GetEnergyLoss());
157 pF0=pF0+vecPFront.Mag();
160 cout<<
"0 "<<
pdcid<<endl;
161 cout<<
"Eloss "<<(point->GetEnergyLoss())<<endl;
162 hist7->Fill(vecPBack.Mag(),point->GetEnergyLoss()/
dx);
163 dEX0=dEX0+((point->GetEnergyLoss())/dx);
167 if(point->GetTrackID()==1)
170 dE1=dE1+point->GetEnergyLoss();
171 pF1=pF1+vecPFront.Mag();
174 cout<<
"1 "<<
pdcid<<endl;
175 cout<<
"Eloss "<<(point->GetEnergyLoss())<<endl;
176 dEX1=dEX1+((point->GetEnergyLoss())/dx);
179 if(point->GetTrackID()==2)
183 dE2=dE2+point->GetEnergyLoss();
184 pF2=pF2+vecPFront.Mag();
187 dEX2=dEX2+((point->GetEnergyLoss())/dx);
190 if(point->GetTrackID()>5)
193 dE3=point->GetEnergyLoss();
197 dEX3=((point->GetEnergyLoss())/dx);
199 hist10->Fill(pF3,dEX3);
203 if((pF3>0.11)&&((dEX3)<(dEBBku->Eval(pF3,0,0)))&&((
dEX3)>(dEBBkl->Eval(pF3,0,0))))
208 if((pF3>0.2)&&((
dEX3)<(dEBBpu->Eval(pF3,0,0)))&&((dEX3>(dEBBpl->Eval(pF3,0,0)))))
211 hist10->Fill(pF3,dEX3);
214 if((pF3>0.03)&&((dEX3)<(dEBBpiu->Eval(pF3,0,0)))&&((
dEX3)>(dEBBpil->Eval(pF3,0,0))))
217 hist10->Fill(pF3,dEX3);
363 dEBBpiu->Draw(
"same C");
364 dEBBpil->Draw(
"same C");
538 cout << endl << endl;
539 cout <<
"Macro finished succesfully." << endl;
540 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
Double_t GetPyOut() const
Double_t GetPxOut() const
Double_t GetPzOut() const