]>
Commit | Line | Data |
---|---|---|
ffbede40 | 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>1.+65<dEdx<90&&MInv>2&&|Y|<0.9"; | |
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>1. && 65<dEdx<90"); | |
66 | pt->AddCut(AliDielectronVarManager::kPt,1.,1e30); | |
67 | pt->AddCut(AliDielectronVarManager::kTPCsignal,65.,90.); | |
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("InvMassY","2<M<4 && |Y|<0.9"); | |
91 | invMassCut->AddCut(AliDielectronVarManager::kM,2.,1e30); | |
92 | invMassCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9); | |
93 | ||
94 | // invMassCut->AddCut(AliDielectronVarManager::kPairType,1.); | |
95 | diele->GetPairFilter().AddCuts(invMassCut); | |
96 | ||
97 | } | |
98 | ||
99 | //______________________________________________________________________________________ | |
100 | AliESDtrackCuts *SetupESDtrackCutsDieleFilter() | |
101 | { | |
102 | // | |
103 | // Setup default AliESDtrackCuts | |
104 | // | |
105 | AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts; | |
106 | ||
107 | esdTrackCuts->SetEtaRange( -0.9 , 0.9 ); | |
108 | ||
109 | esdTrackCuts->SetMaxDCAToVertexZ(3.0); | |
110 | esdTrackCuts->SetMaxDCAToVertexXY(1.0); | |
111 | esdTrackCuts->SetRequireTPCRefit(kTRUE); | |
112 | esdTrackCuts->SetRequireITSRefit(kTRUE); | |
113 | esdTrackCuts->SetAcceptKinkDaughters(kFALSE); | |
114 | esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); | |
115 | ||
116 | esdTrackCuts->SetMinNClustersTPC(100); | |
117 | esdTrackCuts->SetMaxChi2PerClusterTPC(4); | |
118 | ||
119 | return esdTrackCuts; | |
120 | } | |
121 | ||
122 | ||
123 | //______________________________________________________________________________________ | |
124 | void InitHistogramsDieleFilter(AliDielectron *diele, Bool_t isAOD) | |
125 | { | |
126 | // | |
127 | // Initialise the histograms | |
128 | // | |
129 | ||
130 | //Setup histogram classes | |
131 | AliDielectronHistos *histos= | |
132 | new AliDielectronHistos(diele->GetName(), | |
133 | diele->GetTitle()); | |
134 | ||
135 | //Initialise histogram classes | |
136 | histos->SetReservedWords("Track;Pair"); | |
137 | ||
138 | histos->AddClass("Event"); | |
139 | //Track classes | |
140 | //to fill also track info from 2nd event loop until 2 | |
141 | for (Int_t i=0; i<2; ++i){ | |
142 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
143 | } | |
144 | ||
145 | //Pair classes | |
146 | // to fill also mixed event histograms loop until 10 | |
147 | for (Int_t i=0; i<3; ++i){ | |
148 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
149 | } | |
150 | ||
151 | //add histograms to event class | |
152 | histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",300,-15.,15.,AliDielectronVarManager::kZvPrim); | |
153 | ||
154 | //add histograms to Track classes | |
155 | histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt); | |
156 | histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC); | |
157 | ||
158 | histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY); | |
159 | histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ); | |
160 | histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
161 | 100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
162 | ||
163 | histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
164 | 200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
165 | histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", | |
166 | 200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
167 | ||
168 | //add histograms to Pair classes | |
169 | histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", | |
170 | 201,-.01,4.01,AliDielectronVarManager::kM); | |
171 | histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", | |
172 | 100,-1.,1.,AliDielectronVarManager::kY); | |
173 | histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", | |
174 | 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); | |
175 | ||
176 | diele->SetHistogramManager(histos); | |
177 | } |