]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWG3/dielectron/macros/ConfigJpsi2eeData.C
updates and bugfixes in preparation for the AOD filtering. New class added
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / ConfigJpsi2eeData.C
... / ...
CommitLineData
1
2
3void SetupTrackCuts();
4void SetupPairCuts();
5void InitHistograms();
6void InitCF();
7
8AliESDtrackCuts *SetupESDtrackCuts();
9
10TString names=("basicQ+SPDfirst+pt>.6+PID");
11
12TObjArray *arrNames=names.Tokenize(";");
13
14const Int_t nDie=arrNames->GetEntries();
15
16AliDielectron *fDiele=0x0;
17Int_t fCutDefinition=0;
18Bool_t fIsAOD=kFALSE;
19
20AliDielectron* ConfigJpsi2ee(Int_t fCutDefinition, Bool_t isAOD)
21{
22 //
23 // Setup the instance of AliDielectron
24 //
25
26 fCutDefinition=fCutDefinition;
27 fIsAOD=isAOD;
28
29 // create the actual framework object
30 TString name=Form("%02d",fCutDefinition);
31 if (fCutDefinition<arrNames->GetEntriesFast()){
32 name=arrNames->At(fCutDefinition)->GetName();
33 }
34 fDiele = new AliDielectron(Form("%s",name.Data()),
35 Form("Track cuts: %s",name.Data()));
36
37 // cut setup
38 SetupTrackCuts();
39 SetupPairCuts();
40
41 //
42 // histogram setup
43 // only if an AliDielectronHistos object is attached to the
44 // fDielelectron framework histograms will be filled
45 //
46 InitHistograms();
47
48 // the last definition uses no cuts and only the QA histograms should be filled!
49// if (fCutDefinition<nDie-1)
50 InitCF();
51
52 return fDiele;
53}
54
55//______________________________________________________________________________________
56void SetupTrackCuts()
57{
58 //
59 // Setup the track cuts
60 //
61
62 //ESD quality cuts DielectronTrackCuts
63 if (!fIsAOD) {
64 fDiele->GetTrackFilter().AddCuts(SetupESDtrackCuts());
65 } else {
66 AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
67 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
68 trackCuts->SetRequireTPCRefit(kTRUE);
69 trackCuts->SetRequireITSRefit(kTRUE);
70 fDiele->GetTrackFilter().AddCuts(trackCuts);
71 }
72
73 if(fCutDefinition==0) {
74 //Pt cut ----------------------------------------------------------
75 AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
76 pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
77
78 //AOD additions since there are no AliESDtrackCuts -----------------
79 //
80 if (fIsAOD){
81 // TPC #clusteres cut
82 pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
83 pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
84 //TODO: DCA cuts to be investigated!!!
85// pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
86// pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
87 }
88 fDiele->GetTrackFilter().AddCuts(pt);
89
90 // PID cuts --------------------------------------------------------
91 AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3");
92 pid->SetDefaults(10);
93 fDiele->GetTrackFilter().AddCuts(pid);
94 }
95}
96
97//______________________________________________________________________________________
98void SetupPairCuts()
99{
100 //
101 // Setup the pair cuts
102 //
103
104 //Invariant mass and rapidity selection
105 AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8");
106 pairCut->AddCut(AliDielectronVarManager::kM,2.,4.);
107 pairCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8);
108 fDiele->GetPairFilter().AddCuts(pairCut);
109}
110
111//______________________________________________________________________________________
112AliESDtrackCuts *SetupESDtrackCuts()
113{
114 //
115 // Setup default AliESDtrackCuts
116 //
117 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
118
119 // basic track quality cuts (basicQ)
120 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
121 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
122
123 esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
124
125 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
126 esdTrackCuts->SetRequireITSRefit(kTRUE);
127 esdTrackCuts->SetRequireTPCRefit(kTRUE);
128
129 esdTrackCuts->SetMinNClustersTPC(90);
130 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
131
132 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
133
134 return esdTrackCuts;
135}
136
137
138//______________________________________________________________________________________
139void InitHistograms()
140{
141 //
142 // Initialise the histograms
143 //
144
145 //Setup histogram Manager
146 AliDielectronHistos *histos=new AliDielectronHistos(fDiele->GetName(),fDiele->GetTitle());
147
148 //Initialise histogram classes
149 histos->SetReservedWords("Track;Pair");
150
151 //Track classes
152 //to fill also track info from 2nd event loop until 2
153 for (Int_t i=0; i<2; ++i){
154 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
155 }
156
157 //Pair classes
158 // to fill also mixed event histograms loop until 10
159 for (Int_t i=0; i<3; ++i){
160 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
161 }
162
163 //legs from pair
164 for (Int_t i=0; i<3; ++i){
165 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
166 }
167
168 //add histograms to Track classes
169 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
170 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
171
172 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
173 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
174 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
175 200,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
176
177 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
178 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
179 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
180 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
181
182 //add histograms to Pair classes
183 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
184 201,-.01,4.01,AliDielectronVarManager::kM);
185 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
186 100,-1.,1.,AliDielectronVarManager::kY);
187 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
188 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
189
190 fDiele->SetHistogramManager(histos);
191}
192
193
194void InitCF()
195{
196 //
197 // Setupd the CF Manager if needed
198 //
199
200 AliDielectronCF *cf=new AliDielectronCF(fDiele->GetName(),fDiele->GetTitle());
201
202 //pair variables
203 TVectorD *binLimPt=new TVectorD(6);
204 (*binLimPt)[0]=0.0; (*binLimPt)[1]=0.8; (*binLimPt)[2]=1.4; (*binLimPt)[3]=2.8; (*binLimPt)[4]=4.2; (*binLimPt)[5]=9.9;
205 cf->AddVariable(AliDielectronVarManager::kPt,binLimPt);
206 cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
207 cf->AddVariable(AliDielectronVarManager::kM,150,0.,150*.027); //27Mev Steps
208 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
209 //leg variables
210 cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE);
211 cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE);
212
213 fDiele->SetCFManagerPair(cf);
214
215}
216