]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/macros/ConfigJpsi2eeData.C
Signal extraction and error calc. updates (Ionut), updated configs (Jens)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / ConfigJpsi2eeData.C
1
2
3 void SetupTrackCuts();
4 void SetupPairCuts();
5 void InitHistograms();
6 void InitCF();
7
8 AliESDtrackCuts *SetupESDtrackCuts();
9
10 TString names=("basicQ+SPDfirst+pt>.6+PID;basicQ+SPDany+pt>.6+PID");
11
12 TObjArray *arrNames=names.Tokenize(";");
13
14 const Int_t nDie=arrNames->GetEntries();
15
16 AliDielectron *fDiele=0x0;
17 Int_t          fCutDefinition=0;
18 Bool_t         fIsAOD=kFALSE;
19
20 AliDielectron* ConfigJpsi2ee(Int_t cutDefinition, Bool_t isAOD)
21 {
22   //
23   // Setup the instance of AliDielectron
24   //
25   
26   fCutDefinition=cutDefinition;
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 //______________________________________________________________________________________
56 void 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     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);
74   }
75
76   //Pt cut ----------------------------------------------------------
77   AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
78   pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30);
79
80   //AOD additions since there are no AliESDtrackCuts -----------------
81   //
82   if (fIsAOD){
83     // TPC #clusteres cut
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.);
89   }
90   fDiele->GetTrackFilter().AddCuts(pt);
91     
92   // PID cuts --------------------------------------------------------
93   AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3");
94   pid->SetDefaults(10);
95   fDiele->GetTrackFilter().AddCuts(pid);
96 }
97
98 //______________________________________________________________________________________
99 void SetupPairCuts()
100 {
101   //
102   // Setup the pair cuts
103   //
104   
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);
110 }
111
112 //______________________________________________________________________________________
113 AliESDtrackCuts *SetupESDtrackCuts()
114 {
115   //
116   // Setup default AliESDtrackCuts
117   //
118   AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
119   
120   // basic track quality cuts  (basicQ)
121   esdTrackCuts->SetMaxDCAToVertexZ(3.0);
122   esdTrackCuts->SetMaxDCAToVertexXY(1.0);
123   
124   esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
125   
126   esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
127   esdTrackCuts->SetRequireITSRefit(kTRUE);
128   esdTrackCuts->SetRequireTPCRefit(kTRUE);
129   
130   esdTrackCuts->SetMinNClustersTPC(90);
131   esdTrackCuts->SetMaxChi2PerClusterTPC(4);
132   
133   if (fCutDefinition==0)
134     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
135   else if (fCutDefinition==1)
136     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
137   
138   return esdTrackCuts;
139 }
140
141
142 //______________________________________________________________________________________
143 void InitHistograms()
144 {
145   //
146   // Initialise the histograms
147   //
148   
149   //Setup histogram Manager
150   AliDielectronHistos *histos=new AliDielectronHistos(fDiele->GetName(),fDiele->GetTitle());
151   
152   //Initialise histogram classes
153   histos->SetReservedWords("Track;Pair");
154   
155   //Track classes
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)));
159   }
160   
161   //Pair classes
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)));
165   }
166   
167   //legs from pair
168   for (Int_t i=0; i<3; ++i){
169     histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
170   }
171   
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);
175   
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);
180
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);
185       
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);
193   
194   fDiele->SetHistogramManager(histos);
195 }
196
197
198 void InitCF()
199 {
200   //
201   // Setupd the CF Manager if needed
202   //
203   
204   AliDielectronCF *cf=new AliDielectronCF(fDiele->GetName(),fDiele->GetTitle());
205   
206   //pair variables
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);
213   //leg variables
214   cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE);
215   cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE);
216   
217   fDiele->SetCFManagerPair(cf);
218   
219 }
220