8 AliESDtrackCuts *SetupESDtrackCuts();
10 TString names=("basicQ+SPDfirst+pt>.6+PID;basicQ+SPDany+pt>.6+PID");
12 TObjArray *arrNames=names.Tokenize(";");
14 const Int_t nDie=arrNames->GetEntries();
16 AliDielectron *fDiele=0x0;
17 Int_t fCutDefinition=0;
20 AliDielectron* ConfigJpsi2ee(Int_t cutDefinition, Bool_t isAOD)
23 // Setup the instance of AliDielectron
26 fCutDefinition=cutDefinition;
29 // create the actual framework object
30 TString name=Form("%02d",fCutDefinition);
31 if (fCutDefinition<arrNames->GetEntriesFast()){
32 name=arrNames->At(fCutDefinition)->GetName();
34 fDiele = new AliDielectron(Form("%s",name.Data()),
35 Form("Track cuts: %s",name.Data()));
43 // only if an AliDielectronHistos object is attached to the
44 // fDielelectron framework histograms will be filled
48 // the last definition uses no cuts and only the QA histograms should be filled!
49 // if (fCutDefinition<nDie-1)
55 //______________________________________________________________________________________
59 // Setup the track cuts
62 //ESD quality cuts DielectronTrackCuts
64 fDiele->GetTrackFilter().AddCuts(SetupESDtrackCuts());
66 AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
67 if (fCutDefinition==0)
68 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
69 else if (fCutDefinition==1)
70 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
71 trackCuts->SetRequireTPCRefit(kTRUE);
72 trackCuts->SetRequireITSRefit(kTRUE);
73 fDiele->GetTrackFilter().AddCuts(trackCuts);
76 //Pt cut ----------------------------------------------------------
77 AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
78 pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
80 //AOD additions since there are no AliESDtrackCuts -----------------
84 pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
85 pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
86 //TODO: DCA cuts to be investigated!!!
87 // pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
88 // pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
90 fDiele->GetTrackFilter().AddCuts(pt);
92 // PID cuts --------------------------------------------------------
93 AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3");
95 fDiele->GetTrackFilter().AddCuts(pid);
98 //______________________________________________________________________________________
102 // Setup the pair cuts
105 //Invariant mass and rapidity selection
106 AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8");
107 pairCut->AddCut(AliDielectronVarManager::kM,2.,4.);
108 pairCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8);
109 fDiele->GetPairFilter().AddCuts(pairCut);
112 //______________________________________________________________________________________
113 AliESDtrackCuts *SetupESDtrackCuts()
116 // Setup default AliESDtrackCuts
118 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
120 // basic track quality cuts (basicQ)
121 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
122 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
124 esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
126 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
127 esdTrackCuts->SetRequireITSRefit(kTRUE);
128 esdTrackCuts->SetRequireTPCRefit(kTRUE);
130 esdTrackCuts->SetMinNClustersTPC(90);
131 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
133 if (fCutDefinition==0)
134 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
135 else if (fCutDefinition==1)
136 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
142 //______________________________________________________________________________________
143 void InitHistograms()
146 // Initialise the histograms
149 //Setup histogram Manager
150 AliDielectronHistos *histos=new AliDielectronHistos(fDiele->GetName(),fDiele->GetTitle());
152 //Initialise histogram classes
153 histos->SetReservedWords("Track;Pair");
156 //to fill also track info from 2nd event loop until 2
157 for (Int_t i=0; i<2; ++i){
158 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
162 // to fill also mixed event histograms loop until 10
163 for (Int_t i=0; i<3; ++i){
164 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
168 for (Int_t i=0; i<3; ++i){
169 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
172 //add histograms to Track classes
173 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
174 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
176 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
177 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
178 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
179 100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
181 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
182 200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
183 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
184 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
186 //add histograms to Pair classes
187 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
188 201,-.01,4.01,AliDielectronVarManager::kM);
189 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
190 100,-1.,1.,AliDielectronVarManager::kY);
191 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
192 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
194 fDiele->SetHistogramManager(histos);
201 // Setupd the CF Manager if needed
204 AliDielectronCF *cf=new AliDielectronCF(fDiele->GetName(),fDiele->GetTitle());
207 TVectorD *binLimPt=new TVectorD(6);
208 (*binLimPt)[0]=0.0; (*binLimPt)[1]=0.8; (*binLimPt)[2]=1.4; (*binLimPt)[3]=2.8; (*binLimPt)[4]=4.2; (*binLimPt)[5]=9.9;
209 cf->AddVariable(AliDielectronVarManager::kPt,binLimPt);
210 cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
211 cf->AddVariable(AliDielectronVarManager::kM,150,0.,150*.027); //27Mev Steps
212 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
214 cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE);
215 cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE);
217 fDiele->SetCFManagerPair(cf);