6 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/basiclibs.C");
10 gSystem->Load(
"libRho");
12 TCanvas *
c1=
new TCanvas(
"c1",
"c1",900,600);
18 PndEventReader evl(fname);
23 TH1F *phimass =
new TH1F(
"phimass",
"phi cands",100,0.98,1.06);
24 TH1F *pi0mass =
new TH1F(
"pi0mass",
"pi0 cands",100,0.0,0.3);
25 TH1F *dsmass =
new TH1F(
"dsmass",
"Ds cands",100,1.868,2.068);
26 TH1F *ds0mass =
new TH1F(
"ds0mass",
"Ds0 cands",100,2.217,2.417);
27 TH1F *ppmass =
new TH1F(
"ppmass",
"pbarp cands",100,4.185,4.385);
29 TH1F *nmult=
new TH1F(
"nmult",
"# neutrals",15,0,15);
31 TH1F *pdiff=
new TH1F(
"pdiff",
"momentum difference",100,-0.05,0.05);
33 phimass->SetMinimum(0);
34 pi0mass->SetMinimum(0);
35 dsmass->SetMinimum(0);
36 ds0mass->SetMinimum(0);
37 ppmass->SetMinimum(0);
39 if (
num==0)
num= evl->GetEntries();
40 cout <<
"\n####### Processing "<<
num <<
" events...\n"<<endl;
45 TCandList chargedCands, neutralCands, gammaCands, kpCands,kmCands,pipCands,pimCands;
47 TCandList phiCands,pi0Cands,dspCands,dsmCands,ds0pCands,ds0mCands,ppCands;
51 TPidMassSelector *phiMSel =
new TPidMassSelector(
"phiSelector" , 1.0195 , 0.03);
52 TPidMassSelector *pi0MSel =
new TPidMassSelector(
"pi0Selector" , 0.135 , 0.04);
53 TPidMassSelector *dsMSel =
new TPidMassSelector(
"dsSelector" , 1.9685 , 0.04);
64 while (evl.GetEvent() && cnt<
num)
66 if ((cnt%100)==0) cout <<
"evt "<<cnt<<endl;
69 evl.FillList(chargedCands,
"Charged");
70 evl.FillList(mcCands,
"McTruth");
72 evl.FillList(neutralCands,
"Neutral");
73 evl.FillList(kpCands,
"KaonVeryLoosePlus");
74 evl.FillList(kmCands,
"KaonVeryLooseMinus");
75 evl.FillList(pipCands,
"PionVeryLoosePlus");
76 evl.FillList(pimCands,
"PionVeryLooseMinus");
79 for (i1=0;i1<neutralCands.GetLength();i1++)
82 for (i2=0;i2<chargedCands.GetLength();i2++)
84 double ang=neutralCands[i1].P3().Angle(chargedCands[i2].P3());
85 if (ang<minang) minang=ang;
87 if (( neutralCands[i1].GetMicroCandidate()->GetEmcNumberOfCrystals()>=3
89 gammaCands.Add(neutralCands[i1]);
92 nmult->Fill(neutralCands.GetLength());
98 phiCands.Combine(kpCands,kmCands);
101 phiCands.Select(phiMSel);
102 for (i1=0;i1<phiCands.GetLength();i1++) phimass->Fill(phiCands[i1].M());
104 dspCands.Combine(phiCands,pipCands);
105 dsmCands.Combine(phiCands,pimCands);
107 for (i1=0;i1<dspCands.GetLength();i1++) dsmass->Fill(dspCands[i1].M());
108 for (i1=0;i1<dsmCands.GetLength();i1++) dsmass->Fill(dsmCands[i1].M());
109 dspCands.Select(dsMSel);
110 dsmCands.Select(dsMSel);
112 pi0Cands.Combine(gammaCands,gammaCands);
114 for (i1=0;i1<pi0Cands.GetLength();i1++) pi0mass->Fill(pi0Cands[i1].M());
115 pi0Cands.Select(pi0MSel);
117 ds0pCands.Combine(dspCands,pi0Cands);
118 ds0mCands.Combine(dsmCands,pi0Cands);
120 for (i1=0;i1<ds0pCands.GetLength();i1++) ds0mass->Fill(ds0pCands[i1].M());
121 for (i1=0;i1<ds0mCands.GetLength();i1++) ds0mass->Fill(ds0mCands[i1].M());
123 ppCands.Combine(ds0pCands,dsmCands);
124 ppCands.CombineAndAppend(ds0mCands,dspCands);
126 for (i1=0;i1<ppCands.GetLength();i1++) ppmass->Fill(ppCands[i1].M());
128 for (i1=0;i1<chargedCands.GetLength();i1++)
130 int idx=chargedCands[i1].GetMcIdx();
131 if (idx!=-1) pdiff->Fill(chargedCands[i1].
P()-mcCands[idx].
P());
156 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
int ana_dsdsj2_EvtLoop(TString fname="dsds_10k.evt.root", int num=0)