]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/macros/ConfigJpsi2eeFilter.C
5c9cb52783a82b60401e5234f74249ae715bef99
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / ConfigJpsi2eeFilter.C
1 void SetupTrackCutsDieleFilter(AliDielectron *diele, Bool_t isAOD);
2 void SetupPairCutsDieleFilter(AliDielectron *diele, Bool_t isAOD);
3 void SetupEventCutsDieleFilter(AliDielectron *diele, Int_t cutDefinition);
4
5 void InitHistogramsDieleFilter(AliDielectron *diele);
6
7 AliESDtrackCuts *SetupESDtrackCutsDieleFilter();
8
9
10 AliDielectron* ConfigJpsi2eeFilter(Bool_t isAOD=kFALSE)
11 {
12   //
13   // Setup the instance of AliDielectron
14   //
15
16   // create the actual framework object
17   TString name="trackQ+Pt>0.6+60<dEdx<100";
18   AliDielectron *diele = new AliDielectron(Form("%s",name.Data()),
19                              Form("Track cuts: %s",name.Data()));
20   
21   // cut setup
22   SetupEventCutsDieleFilter(diele);
23   
24   SetupTrackCutsDieleFilter(diele, isAOD);
25   SetupPairCutsDieleFilter(diele, isAOD);
26   
27   //
28   // QA histogram setup
29   //
30   InitHistogramsDieleFilter(diele, isAOD);
31   
32   return diele;
33 }
34
35 //______________________________________________________________________________________
36 void SetupEventCutsDieleFilter(AliDielectron *diele)
37 {
38   //
39   // Setup the event cuts
40   //
41   AliDielectronVarCuts *vtxZ = new AliDielectronVarCuts("vtxZ","Vertex z cut");
42   vtxZ->AddCut(AliDielectronVarManager::kZvPrim,-15.,15.);
43   diele->GetEventFilter().AddCuts(vtxZ);
44 }
45
46 //______________________________________________________________________________________
47 void SetupTrackCutsDieleFilter(AliDielectron *diele, Bool_t isAOD)
48 {
49   //
50   // Setup the track cuts
51   //
52   
53   //ESD quality cuts DielectronTrackCuts
54   if (!isAOD) {
55     diele->GetTrackFilter().AddCuts(SetupESDtrackCutsDieleFilter());
56   } else {
57     AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
58     trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
59     trackCuts->SetRequireTPCRefit(kTRUE);
60     trackCuts->SetRequireITSRefit(kTRUE);
61     diele->GetTrackFilter().AddCuts(trackCuts);
62   }
63   
64   //Pt cut
65   AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5+60<dEdx<100","Pt>.6 && 60<dEdx<100");
66   pt->AddCut(AliDielectronVarManager::kPt,.6,1e30);
67   pt->AddCut(AliDielectronVarManager::kTPCsignal,60.,100.);
68
69   if (isAOD){
70       // TPC #clusteres cut
71     pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
72 //     pt->AddCut(AliDielectronVarManager::kEta,-0.88,0.88);
73     //TODO: DCA cuts to be investigated!!!
74 //     pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
75 //     pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
76   }
77   
78   diele->GetTrackFilter().AddCuts(pt);
79 }
80
81 //______________________________________________________________________________________
82 void SetupPairCutsDieleFilter(AliDielectron *diele, Bool_t isAOD)
83 {
84   //
85   // Setup the pair cuts
86   //
87   
88   
89   //Invarian mass selection
90   AliDielectronVarCuts *invMassCut=new AliDielectronVarCuts("InvMass","2<M<4");
91   invMassCut->AddCut(AliDielectronVarManager::kM,2.,1e30);
92 //   invMassCut->AddCut(AliDielectronVarManager::kPairType,1.);
93   diele->GetPairFilter().AddCuts(invMassCut);
94
95 }
96
97 //______________________________________________________________________________________
98 AliESDtrackCuts *SetupESDtrackCutsDieleFilter()
99 {
100   //
101   // Setup default AliESDtrackCuts
102   //
103   AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
104   
105   esdTrackCuts->SetMaxDCAToVertexZ(3.0);
106   esdTrackCuts->SetMaxDCAToVertexXY(1.0); 
107   esdTrackCuts->SetRequireTPCRefit(kTRUE);
108   esdTrackCuts->SetRequireITSRefit(kTRUE);
109   esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
110   esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
111   
112   esdTrackCuts->SetMinNClustersTPC(90);
113   esdTrackCuts->SetMaxChi2PerClusterTPC(4);
114
115   return esdTrackCuts;
116 }
117
118
119 //______________________________________________________________________________________
120 void InitHistogramsDieleFilter(AliDielectron *diele, Bool_t isAOD)
121 {
122   //
123   // Initialise the histograms
124   //
125   
126 //Setup histogram classes
127   AliDielectronHistos *histos=
128     new AliDielectronHistos(diele->GetName(),
129                             diele->GetTitle());
130   
131   //Initialise histogram classes
132   histos->SetReservedWords("Track;Pair");
133
134   histos->AddClass("Event");
135   //Track classes
136   //to fill also track info from 2nd event loop until 2
137   for (Int_t i=0; i<2; ++i){
138     histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
139   }
140   
141   //Pair classes
142   // to fill also mixed event histograms loop until 10
143   for (Int_t i=0; i<3; ++i){
144     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
145   }
146
147   //add histograms to event class
148   histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim);
149   
150   //add histograms to Track classes
151   histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
152   histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
153   
154   histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
155   histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
156   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
157                         100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
158   
159   histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
160                         200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
161   histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
162                         200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
163   
164   //add histograms to Pair classes
165   histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
166                         201,-.01,4.01,AliDielectronVarManager::kM);
167   histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
168                         100,-1.,1.,AliDielectronVarManager::kY);
169   histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
170                         100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
171   
172   diele->SetHistogramManager(histos);
173 }