6 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/basiclibs.C");
10 gSystem->Load(
"libRho");
12 TCanvas *
c1=
new TCanvas(
"c1",
"c1",900,600);
17 TFile*
f =
new TFile(fname.Data());
18 TTree *
t=f->Get(
"pndsim") ;
22 TClonesArray *fChrgCands=
new TClonesArray(
"TCandidate");
23 TClonesArray *fNeutCands=
new TClonesArray(
"TCandidate");
24 TClonesArray *
fMcCands=
new TClonesArray(
"TCandidate");
26 t->SetBranchAddress(
"PndChargedCandidates",&fChrgCands);
27 t->SetBranchAddress(
"PndNeutralCandidates",&fNeutCands);
28 t->SetBranchAddress(
"PndMcTracks",&fMcCands);
34 TH1F *phimass =
new TH1F(
"phimass",
"phi cands",100,0.95,1.1);
35 TH1F *pi0mass =
new TH1F(
"pi0mass",
"pi0 cands",100,0.135-0.03,0.135+0.03);
36 TH1F *dsmass =
new TH1F(
"dsmass",
"Ds cands",100,1.968-0.03,1.968+0.03);
37 TH1F *ds0mass =
new TH1F(
"ds0mass",
"Ds0 cands",100,2.317-0.05,2.317+0.05);
38 TH1F *ppmass =
new TH1F(
"ppmass",
"pbarp cands",100,4.306-0.1,4.306+0.1);
40 TH1F *nmult=
new TH1F(
"nmult",
"# neutrals",15,0,15);
42 TH1F *pdiff=
new TH1F(
"pdiff",
"momentum difference",100,-0.05,0.05);
44 phimass->SetMinimum(0);
45 pi0mass->SetMinimum(0);
46 dsmass->SetMinimum(0);
47 ds0mass->SetMinimum(0);
48 ppmass->SetMinimum(0);
50 if (
num==0)
num= t->GetEntriesFast();
51 cout <<
"\n####### Processing "<<
num <<
" events...\n"<<endl;
57 TCandList allCands,neutralCands,chargedCands, plusCands,minusCands;
59 TCandList kpCands,kmCands,piCands;
61 TCandList phiCands,pi0Cands,dsCands,ds0Cands,ppCands;
65 TPidChargedSelector *chargedSel =
new TPidChargedSelector;
66 TPidNeutralSelector *neutralSel =
new TPidNeutralSelector;
67 TPidPlusSelector *plusSel =
new TPidPlusSelector;
68 TPidMinusSelector *minusSel =
new TPidMinusSelector;
72 TPidMassSelector *phiMSel =
new TPidMassSelector(
"phiSelector" , 1.0195 , 0.01);
73 TPidMassSelector *pi0MSel =
new TPidMassSelector(
"pi0Selector" , 0.135 , 0.005);
74 TPidMassSelector *dsMSel =
new TPidMassSelector(
"dsSelector" , 1.9685 , 0.01);
76 TPidSimpleKaonSelector *kSel =
new TPidSimpleKaonSelector();
77 kSel->SetCriterion(
"loose");
78 TPidSimplePionSelector *piSel =
new TPidSimplePionSelector();
79 piSel->SetCriterion(
"veryLoose");
85 for (Int_t j=0; j<
num;j++)
87 if ((j%100)==0) cout <<
"evt "<<j<<endl;
90 TFactory::Instance()->Reset();
93 chargedCands.Cleanup();
94 neutralCands.Cleanup();
99 for (i1=0; i1<fChrgCands->GetEntriesFast(); i1++){
100 tc = (TCandidate *)fChrgCands->At(i1);
101 chargedCands.Add(*tc);
104 for (i1=0; i1<fNeutCands->GetEntriesFast(); i1++){
105 tc = (TCandidate *)fNeutCands->At(i1);
106 neutralCands.Add(*tc);
109 for (i1=0; i1<fMcCands->GetEntriesFast(); i1++){
110 tc = (TCandidate *)fMcCands->At(i1);
120 nmult->Fill(neutralCands.GetLength());
122 plusCands.Select(chargedCands ,plusSel);
123 minusCands.Select(chargedCands ,minusSel);
127 kpCands.Select(plusCands ,kSel);
128 kmCands.Select(minusCands ,kSel);
129 piCands.Select(chargedCands ,piSel);
134 phiCands.Combine(kpCands,kmCands);
136 TCandListIterator iterPhi(phiCands);
137 while (tc=iterPhi.Next()) phimass->Fill(tc->M());
138 phiCands.Select(phiMSel);
140 dsCands.Combine(phiCands,piCands);
142 TCandListIterator iterDs(dsCands);
143 while (tc=iterDs.Next()) dsmass->Fill(tc->M());
144 dsCands.Select(dsMSel);
146 pi0Cands.Combine(neutralCands,neutralCands);
148 TCandListIterator iterPi0(pi0Cands);
149 while (tc=iterPi0.Next()) pi0mass->Fill(tc->M());
150 pi0Cands.Select(pi0MSel);
152 ds0Cands.Combine(dsCands,pi0Cands);
154 TCandListIterator iterDs0(ds0Cands);
155 while (tc=iterDs0.Next()) ds0mass->Fill(tc->M());
157 ppCands.Combine(ds0Cands,dsCands);
159 ppCands.Select(neutralSel);
163 ppCands.RemoveClones();
165 TCandListIterator iterPp(ppCands);
167 while (tc=iterPp.Next())
169 ppmass->Fill(tc->M());
173 TCandListIterator iterChrg(chargedCands);
174 while(tc=iterChrg.Next())
176 int idx=tc->GetMcIdx();
177 if (idx!=-1) pdiff->Fill(tc->P()-mcCands[
idx]->P());
202 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)