]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/ConfigJpsi_mw_pp.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / ConfigJpsi_mw_pp.C
CommitLineData
0094dcc0 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2void InitCF(AliDielectron* die, Int_t cutDefinition);
3
4void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
5void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
6
7AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition);
8
9TString names=("trackQ+highpT+11dE/p(oneleg)+55<dEdx<120");
10TObjArray *arrNames=names.Tokenize(";");
11
12const Int_t nDie=arrNames->GetEntries();
13
14AliDielectron* ConfigJpsi_mw_pp(Int_t cutDefinition)
15{
16 //
17 // Setup the instance of AliDielectron
18 //
19
20 // create the actual framework object
21 TString name=Form("%02d",cutDefinition);
22 if (cutDefinition<arrNames->GetEntriesFast()){
23 name=arrNames->At(cutDefinition)->GetName();
24 }
25 AliDielectron *die =
26 new AliDielectron(Form("%s",name.Data()),
27 Form("Track cuts: %s",name.Data()));
28
29 // cut setup
30 SetupTrackCuts(die,cutDefinition);
31 SetupPairCuts(die,cutDefinition);
32
33 //
34 // histogram setup
35 // only if an AliDielectronHistos object is attached to the
36 // dielectron framework histograms will be filled
37 //
38 InitHistograms(die,cutDefinition);
39
40 // init the debug tree. Use this only if you know what you are doing!!!
41 InitDebugTree(die,cutDefinition);
42
43 return die;
44}
45
46//______________________________________________________________________________________
47void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
48{
49 //
50 // Setup the track cuts
51 //
52
53 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
54 die->GetTrackFilter().AddCuts(cuts);
55
56 //Pt + nsigma cut
57 AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>1.5+55<dEdx<120","Pt>1.5");
58
59 pt->AddCut(AliDielectronVarManager::kPt,1.5,1e30);
60 //pt->AddCut(AliDielectronVarManager::kTPCsignal,70.,100.);//was before 60!!
61 pt->AddCut(AliDielectronVarManager::kNclsTPC,50.,160.);
62 //here also cut for 0.9 eta range of legs
63 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
64
65 /*
66 pt->AddCut(AliDielectronVarManager::kPt,.6,1e30);
67 // pt->AddCut(AliDielectronVarManager::kTPCsignal,60.,100.);
68 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,5.);
69 */
70 pt->AddCut(AliDielectronVarManager::kTPCsignal,55.,120.);//to be checked, usually rather 70, but after check in reduced trees and look at QA plots from GSI and consultation with Jens from 55 to 120 chosen, lower (seems to be also logical due to relative pull down of electron compared to pion line (MIP usually set to 50 by default) by lower TPC gain )
71 cuts->AddCut(pt);
72
73 //ESD quality cuts
74 cuts->AddCut(SetupESDtrackCuts(cutDefinition));
75
76 //remove conversions tagged by the V0 tender supply
77 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
78 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
79 cuts->AddCut(noconv);
80
81
82}
83
84//______________________________________________________________________________________
85void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
86{
87 //
88 // Setup the pair cuts
89 //
90
91 //
92 // Setup the pair cuts
93 //
94 //Invarian mass selection
95 AliDielectronVarCuts *invMassCut=new AliDielectronVarCuts("InvMass","1.6<M<5.0, pT>3.");
96 // Minv > 1.8
97 invMassCut->AddCut(AliDielectronVarManager::kM,1.6,5.0);
98//invMassCut->AddCut(AliDielectronVarManager::kPairType,1.);
99 // ptJpsi > 1GeV
100 invMassCut->AddCut(AliDielectronVarManager::kPt,3.,1e30);//pT in the end also more stringent 5 or something like this
101 die->GetPairFilter().AddCuts(invMassCut);
102
103 AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
104 gammaCut->AddCut(AliDielectronVarManager::kM,0.,.05);// was first at 0.05
105 die->GetPairPreFilter().AddCuts(gammaCut);
106
107 //EMCAL cut only on one leg!
108 AliDielectronPID *EMCAL = new AliDielectronPID("EMCAL","EMCAL nSigma e>-3. +e<4.");
109 EMCAL->AddCut(AliDielectronPID::kEMCAL, AliPID::kElectron,-3.,4.);
110
111 AliDielectronVarCuts *ptoneleg = new AliDielectronVarCuts("Pt>2.","Pt>2.");//finally perhaps 3.5, just more open for playing
112 // pt > 0.7GeV
113 ptoneleg->AddCut(AliDielectronVarManager::kPt,2.0,1e30);
114
115 AliDielectronPairLegCuts *EMCALAny = new AliDielectronPairLegCuts("EMCALpid any","EMCALpid any");
116 EMCALAny->GetLeg1Filter().AddCuts(EMCAL);
117 EMCALAny->GetLeg1Filter().AddCuts(ptoneleg);
118 EMCALAny->GetLeg2Filter().AddCuts(EMCAL);
119 EMCALAny->GetLeg2Filter().AddCuts(ptoneleg);
120 EMCALAny->SetCutType(AliDielectronPairLegCuts::kAnyLeg);
121 die->GetPairFilter().AddCuts(EMCALAny);
122
123
124
125 die->SetPreFilterUnlikeOnly();
126}
127
128//______________________________________________________________________________________
129AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition)
130{
131 //
132 // Setup default AliESDtrackCuts
133 //
134 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
135
136 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
137 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
138 esdTrackCuts->SetRequireTPCRefit(kTRUE);
139 //esdTrackCuts->SetRequireITSRefit(kTRUE);
140 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
141// esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
142
143 esdTrackCuts->SetMinNClustersTPC(50);
144 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
145
146 return esdTrackCuts;
147}
148
149
150//______________________________________________________________________________________
151void InitHistograms(AliDielectron *die, Int_t cutDefinition)
152{
153 //
154 // Initialise the histograms
155 //
156
157//Setup histogram classes
158 AliDielectronHistos *histos=
159 new AliDielectronHistos(die->GetName(),
160 die->GetTitle());
161
162 //Initialise histogram classes
163 histos->SetReservedWords("Track;Pair");
164
165 //Event class
166 histos->AddClass("Event");
167
168 //Track classes
169 //to fill also track info from 2nd event loop until 2
170 for (Int_t i=0; i<2; ++i){
171 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
172 }
173
174 //Pair classes
175 // to fill also mixed event histograms loop until 10
176 for (Int_t i=0; i<3; ++i){
177 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
178 }
179
180 //add histograms to event class
181 histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim);
182
183 //add histograms to Track classes
184 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
185 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
186 200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
187 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
188 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
189 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
190 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
191 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
192 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
193
194
195 histos->UserHistogram("Track","TOFnSigmaEle_P","TOF number of sigmas Electrons;P [GeV];TOF number of sigmas Electrons;#tracks",
196 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
197 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
198 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
199 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
200 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
201
202histos->UserHistogram("Track","EmCalnSigmaEle_P","EMCAL number of sigmas Electrons;P [GeV];EMCAL number of sigmas Electrons;#tracks",
203 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kEMCALnSigmaEle,kTRUE);
204
205 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
206
207 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
208 histos->UserHistogram("Track","TPCnClsIter1","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPCiter1);
209 histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN);
210
211 //add histograms to Pair classes
212 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
213 201,-.01,4.01,AliDielectronVarManager::kM);
214 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
215 100,-2.,2.,AliDielectronVarManager::kY);
216 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
217 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
218 histos->UserHistogram("Pair","Chi2/NDF","#Chi^{2}/NDF;#Chi^{2}/NDF",
219 100, 0., 20., AliDielectronVarManager::kChi2NDF);
220
221 die->SetHistogramManager(histos);
222}
223
224//______________________________________________________________________________________
225void InitDebugTree(AliDielectron *die, Int_t cutDefinition)
226{
227 //
228 // Create a debug tree manager
229 // it should be only defined for ONE AliDielectron manager!!!
230
231 //follwing lines taken out for grid compatibility and replaced by lines after this!
232 /*
233 AliDielectronDebugTree *tree=new AliDielectronDebugTree(Form("%sDebug",die->GetName()), "DielectronDebugTree");
234 tree->SetOutputFileName(Form("jpsi_debug%02d.root",cutDefinition));
235 TString addoutput=gSystem->Getenv("ADD_OUTPUT_FILES");
236 if (addoutput.Length()) addoutput+=",";
237 addoutput+=Form("jpsi_debug%02d.root",cutDefinition);
238 gSystem->Setenv("ADD_OUTPUT_FILES",addoutput.Data());
239 */
240
241 AliDielectronDebugTree *tree=new AliDielectronDebugTree(Form("%sDebug",die->GetName()), "DielectronDebugTree");
242 tree->SetOutputFileName("Jpsi_debugTree.root");
243 // tree->AddPairVariable(AliDielectronVarManager::kPx);
244 // tree->AddPairVariable(AliDielectronVarManager::kPy);
245 // tree->AddPairVariable(AliDielectronVarManager::kPz);
246 tree->AddPairVariable(AliDielectronVarManager::kZvPrim);
247 tree->AddPairVariable(AliDielectronVarManager::kPt);
248 tree->AddPairVariable(AliDielectronVarManager::kY);
249 tree->AddPairVariable(AliDielectronVarManager::kPhi);
250 tree->AddPairVariable(AliDielectronVarManager::kM);
251 tree->AddPairVariable(AliDielectronVarManager::kPairType);
252 // tree->AddPairVariable(AliDielectronVarManager::kLegDist); // needs fix in KF package
253 // tree->AddPairVariable(AliDielectronVarManager::kLegDistXY);
254 tree->AddPairVariable(AliDielectronVarManager::kOpeningAngle);
255 tree->AddPairVariable(AliDielectronVarManager::kChi2NDF);
256 tree->AddPairVariable(AliDielectronVarManager::kThetaCS);
257 tree->AddPairVariable(AliDielectronVarManager::kThetaHE);
258
259 // leg variables
260 // tree->AddLegVariable(AliDielectronVarManager::kPx);
261 // tree->AddLegVariable(AliDielectronVarManager::kPy);
262 // tree->AddLegVariable(AliDielectronVarManager::kPz);
263 tree->AddLegVariable(AliDielectronVarManager::kPt);
264 tree->AddLegVariable(AliDielectronVarManager::kP);
265 // tree->AddLegVariable(AliDielectronVarManager::kE);
266 // tree->AddLegVariable(AliDielectronVarManager::kM);
267 tree->AddLegVariable(AliDielectronVarManager::kEta);
268 tree->AddLegVariable(AliDielectronVarManager::kPhi);
269 tree->AddLegVariable(AliDielectronVarManager::kImpactParXY);
270 tree->AddLegVariable(AliDielectronVarManager::kImpactParZ);
271
272 tree->AddLegVariable(AliDielectronVarManager::kPIn);
273 tree->AddLegVariable(AliDielectronVarManager::kTPCsignal);
274 tree->AddLegVariable(AliDielectronVarManager::kTPCsignalN);
275 tree->AddLegVariable(AliDielectronVarManager::kNclsTPC);
276// tree->AddLegVariable(AliDielectronVarManager::kNFclsTPCr);
277// tree->AddLegVariable(AliDielectronVarManager::kNFclsTPCrFrac);
278 tree->AddLegVariable(AliDielectronVarManager::kTPCchi2Cl);
279 tree->AddLegVariable(AliDielectronVarManager::kITSchi2Cl);
280 tree->AddLegVariable(AliDielectronVarManager::kTrackStatus);
281
282 tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaEle);
283 tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaPio);
284// tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaMuo);
285 tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaKao);
286 tree->AddLegVariable(AliDielectronVarManager::kTPCnSigmaPro);
287
288 tree->AddLegVariable(AliDielectronVarManager::kEMCALnSigmaEle);
289
290 tree->AddLegVariable(AliDielectronVarManager::kKinkIndex0);
291
292// tree->AddLegVariable(AliDielectronVarManager::kITSclusterMap);
293 tree->AddLegVariable(AliDielectronVarManager::kITSLayerFirstCls);
294
295 tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaEle);
296 // tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaPio);
297 // tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaMuo);
298 // tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaKao);
299 // tree->AddLegVariable(AliDielectronVarManager::kTOFnSigmaPro);
300
301 // tree->AddLegVariable(AliDielectronVarManager::kTRDpidQuality);
302 // tree->AddLegVariable(AliDielectronVarManager::kTRDprobEle);
303 // tree->AddLegVariable(AliDielectronVarManager::kTRDprobPio);
304
305 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
306 if (hasMC){
307 tree->AddLegVariable(AliDielectronVarManager::kPdgCode);
308 tree->AddLegVariable(AliDielectronVarManager::kPdgCodeMother);
309 tree->AddLegVariable(AliDielectronVarManager::kPdgCodeGrandMother);
310 }
311
312 die->SetDebugTree(tree);
313}
314
315