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