]>
Commit | Line | Data |
---|---|---|
2a14a7b1 | 1 | /************************************************************************* |
2 | * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /////////////////////////////////////////////////////////////////////////// | |
17 | // Dielectron EventCuts // | |
18 | // // | |
19 | // // | |
20 | /* | |
21 | Detailed description | |
22 | ||
23 | ||
24 | */ | |
25 | // // | |
26 | /////////////////////////////////////////////////////////////////////////// | |
27 | ||
5720c765 | 28 | |
2a14a7b1 | 29 | #include <AliTriggerAnalysis.h> |
30 | #include <AliESDVertex.h> | |
31 | #include <AliESDEvent.h> | |
ffbede40 | 32 | #include <AliMultiplicity.h> |
ba15fdfb | 33 | #include <AliCentrality.h> |
2a14a7b1 | 34 | |
35 | #include "AliDielectronEventCuts.h" | |
36 | ||
37 | ClassImp(AliDielectronEventCuts) | |
38 | ||
39 | AliDielectronEventCuts::AliDielectronEventCuts() : | |
40 | AliAnalysisCuts(), | |
41 | fVtxZmin(0.), | |
42 | fVtxZmax(0.), | |
43 | fRequireVtx(kFALSE), | |
44 | fMinVtxContributors(0), | |
ffbede40 | 45 | fMultITSTPC(kFALSE), |
ba15fdfb | 46 | fCentMin(1.), |
47 | fCentMax(0.), | |
2a14a7b1 | 48 | fVtxType(kVtxTracks), |
49 | fRequireV0and(0), | |
50 | fTriggerAnalysis(0x0), | |
51 | fkVertex(0x0) | |
52 | { | |
53 | // | |
54 | // Default Constructor | |
55 | // | |
56 | ||
57 | } | |
58 | ||
59 | //______________________________________________ | |
60 | AliDielectronEventCuts::AliDielectronEventCuts(const char* name, const char* title) : | |
61 | AliAnalysisCuts(name, title), | |
62 | fVtxZmin(0.), | |
63 | fVtxZmax(0.), | |
64 | fRequireVtx(kFALSE), | |
65 | fMinVtxContributors(0), | |
ffbede40 | 66 | fMultITSTPC(kFALSE), |
ba15fdfb | 67 | fCentMin(1.), |
68 | fCentMax(0.), | |
2a14a7b1 | 69 | fVtxType(kVtxTracks), |
70 | fRequireV0and(0), | |
71 | fTriggerAnalysis(0x0), | |
72 | fkVertex(0x0) | |
73 | { | |
74 | // | |
75 | // Named Constructor | |
76 | // | |
77 | } | |
78 | ||
79 | //______________________________________________ | |
80 | AliDielectronEventCuts::~AliDielectronEventCuts() | |
81 | { | |
82 | // | |
83 | // Default Destructor | |
84 | // | |
85 | if (fTriggerAnalysis) delete fTriggerAnalysis; | |
86 | } | |
87 | ||
88 | //______________________________________________ | |
89 | Bool_t AliDielectronEventCuts::IsSelected(TObject* event) | |
90 | { | |
91 | // | |
92 | // check the cuts | |
93 | // | |
94 | ||
95 | AliESDEvent *ev=dynamic_cast<AliESDEvent*>(event); | |
96 | if (!ev) return kFALSE; | |
97 | ||
ba15fdfb | 98 | if (fCentMin<fCentMax){ |
99 | AliCentrality *centrality=ev->GetCentrality(); | |
100 | Double_t centralityF=-1; | |
101 | if (centrality) centralityF = centrality->GetCentralityPercentile("V0M"); | |
102 | if (centralityF<fCentMin || centralityF>=fCentMax) return kFALSE; | |
103 | } | |
104 | ||
2a14a7b1 | 105 | fkVertex=0x0; |
5720c765 | 106 | |
2a14a7b1 | 107 | switch(fVtxType){ |
1201a1a9 | 108 | case kVtxTracks: |
109 | case kVtxTracksOrSPD: | |
110 | fkVertex=ev->GetPrimaryVertexTracks(); | |
111 | break; | |
2a14a7b1 | 112 | case kVtxSPD: fkVertex=ev->GetPrimaryVertexSPD(); break; |
113 | case kVtxTPC: fkVertex=ev->GetPrimaryVertexTPC(); break; | |
114 | case kVtxAny: fkVertex=ev->GetPrimaryVertex(); break; | |
115 | } | |
116 | ||
117 | if ((fRequireVtx||fVtxZmin<fVtxZmax||fMinVtxContributors>0)&&!fkVertex) return kFALSE; | |
118 | ||
2a14a7b1 | 119 | |
120 | if (fMinVtxContributors>0){ | |
121 | Int_t nCtrb = fkVertex->GetNContributors(); | |
ba15fdfb | 122 | if (nCtrb<fMinVtxContributors){ |
123 | if (fVtxType==kVtxTracksOrSPD){ | |
124 | fkVertex=ev->GetPrimaryVertexSPD(); | |
125 | nCtrb = fkVertex->GetNContributors(); | |
126 | if (nCtrb<fMinVtxContributors) return kFALSE; | |
127 | } else { | |
128 | return kFALSE; | |
129 | } | |
130 | } | |
2a14a7b1 | 131 | } |
132 | ||
ba15fdfb | 133 | if (fVtxZmin<fVtxZmax){ |
134 | Double_t zvtx=fkVertex->GetZv(); | |
135 | if (zvtx<fVtxZmin||zvtx>fVtxZmax) return kFALSE; | |
136 | } | |
137 | ||
2a14a7b1 | 138 | if (fRequireV0and){ |
139 | if (!fTriggerAnalysis) fTriggerAnalysis=new AliTriggerAnalysis; | |
140 | Bool_t v0AND = kFALSE; | |
141 | if (fRequireV0and==1){ | |
142 | Bool_t v0A = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0A); | |
143 | Bool_t v0C = fTriggerAnalysis->IsOfflineTriggerFired(ev, AliTriggerAnalysis::kV0C); | |
144 | v0AND = v0A && v0C; | |
145 | } | |
146 | ||
147 | if (fRequireV0and==2){ | |
148 | Bool_t v0AHW = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kASide, kTRUE) == AliTriggerAnalysis::kV0BB); | |
149 | Bool_t v0CHW = (fTriggerAnalysis->V0Trigger(ev, AliTriggerAnalysis::kCSide, kTRUE) == AliTriggerAnalysis::kV0BB); | |
150 | v0AND = v0AHW && v0CHW; | |
151 | } | |
152 | ||
153 | if (!v0AND) return kFALSE; | |
154 | } | |
ffbede40 | 155 | |
156 | if (fMultITSTPC){ | |
157 | const AliESDVertex *vtxESDTPC=ev->GetPrimaryVertexTPC(); | |
158 | const AliMultiplicity *multESD = ev->GetMultiplicity(); | |
159 | if ( vtxESDTPC && multESD && vtxESDTPC->GetNContributors() < (-10.+0.25*multESD->GetNumberOfITSClusters(0)) ) | |
160 | return kFALSE; | |
161 | } | |
ba15fdfb | 162 | |
2a14a7b1 | 163 | |
164 | return kTRUE; | |
165 | } | |
166 |