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