30 #include "AliVVertex.h"
31 #include "AliVEvent.h"
32 #include "AliESDEvent.h"
33 #include "AliAODEvent.h"
34 #include "AliAODHeader.h"
35 #include "AliCentrality.h"
36 #include "AliMultSelection.h"
37 #include "AliESDVZERO.h"
38 #include "AliMultiplicity.h"
39 #include "AliMCEvent.h"
42 #include "AliTriggerAnalysis.h"
43 #include "AliCollisionGeometry.h"
44 #include "AliGenEventHeader.h"
45 #include "AliAnalysisUtils.h"
46 #include "AliMultSelection.h"
56 fCutNumberOfTracks(kFALSE),
57 fNumberOfTracksMax(INT_MAX),
58 fNumberOfTracksMin(INT_MIN),
60 fRefMultMethod(kTPConly),
61 fUseAliESDtrackCutsRefMult(kFALSE),
62 fRefMultMethodAliESDtrackCuts(AliESDtrackCuts::kTrackletsITSTPC),
67 fStandardTPCcuts(NULL),
68 fStandardGlobalCuts(NULL),
71 fCutPrimaryVertexX(kFALSE),
72 fPrimaryVertexXmax(INT_MAX),
73 fPrimaryVertexXmin(INT_MIN),
74 fCutPrimaryVertexY(kFALSE),
75 fPrimaryVertexYmax(INT_MAX),
76 fPrimaryVertexYmin(INT_MIN),
77 fCutPrimaryVertexZ(kFALSE),
78 fPrimaryVertexZmax(INT_MAX),
79 fPrimaryVertexZmin(INT_MIN),
80 fCutNContributors(kFALSE),
81 fNContributorsMax(INT_MAX),
82 fNContributorsMin(INT_MIN),
86 fCutSPDvertexerAnomaly(kFALSE),
87 fCutSPDTRKVtxZ(kFALSE),
88 fCutTPCmultiplicityOutliers(kFALSE),
89 fCutTPCmultiplicityOutliersAOD(kFALSE),
90 fUseCentralityUnchecked(kFALSE),
91 fCentralityPercentileMethod(kTPConly),
92 fCutZDCtiming(kFALSE),
94 fCutImpactParameter(kFALSE),
95 fImpactParameterMin(0.0),
96 fImpactParameterMax(100.0),
97 fhistTPCvsGlobalMult(0),
108 fCutNumberOfTracks(kFALSE),
109 fNumberOfTracksMax(INT_MAX),
110 fNumberOfTracksMin(INT_MIN),
112 fRefMultMethod(kTPConly),
113 fUseAliESDtrackCutsRefMult(kFALSE),
114 fRefMultMethodAliESDtrackCuts(AliESDtrackCuts::kTrackletsITSTPC),
115 fRefMultMax(INT_MAX),
116 fRefMultMin(INT_MIN),
119 fStandardTPCcuts(
AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts2010()),
122 fMultSelection(NULL),
123 fCutPrimaryVertexX(kFALSE),
124 fPrimaryVertexXmax(INT_MAX),
125 fPrimaryVertexXmin(INT_MIN),
126 fCutPrimaryVertexY(kFALSE),
127 fPrimaryVertexYmax(INT_MAX),
128 fPrimaryVertexYmin(INT_MIN),
129 fCutPrimaryVertexZ(kFALSE),
130 fPrimaryVertexZmax(INT_MAX),
131 fPrimaryVertexZmin(INT_MIN),
132 fCutNContributors(kFALSE),
133 fNContributorsMax(INT_MAX),
134 fNContributorsMin(INT_MIN),
136 fMeanPtMax(-DBL_MAX),
138 fCutSPDvertexerAnomaly(kFALSE),
139 fCutSPDTRKVtxZ(kFALSE),
140 fCutTPCmultiplicityOutliers(kFALSE),
141 fCutTPCmultiplicityOutliersAOD(kFALSE),
142 fUseCentralityUnchecked(kFALSE),
143 fCentralityPercentileMethod(kTPConly),
144 fCutZDCtiming(kFALSE),
146 fCutImpactParameter(kFALSE),
147 fImpactParameterMin(0.0),
148 fImpactParameterMax(100.0),
149 fhistTPCvsGlobalMult(0),
160 fCutNumberOfTracks(that.fCutNumberOfTracks),
161 fNumberOfTracksMax(that.fNumberOfTracksMax),
162 fNumberOfTracksMin(that.fNumberOfTracksMin),
163 fCutRefMult(that.fCutRefMult),
164 fRefMultMethod(that.fRefMultMethod),
165 fUseAliESDtrackCutsRefMult(that.fUseAliESDtrackCutsRefMult),
166 fRefMultMethodAliESDtrackCuts(that.fRefMultMethodAliESDtrackCuts),
167 fRefMultMax(that.fRefMultMax),
168 fRefMultMin(that.fRefMultMin),
171 fStandardTPCcuts(NULL),
172 fStandardGlobalCuts(NULL),
174 fMultSelection(NULL),
175 fCutPrimaryVertexX(that.fCutPrimaryVertexX),
176 fPrimaryVertexXmax(that.fPrimaryVertexXmax),
177 fPrimaryVertexXmin(that.fPrimaryVertexXmin),
178 fCutPrimaryVertexY(that.fCutPrimaryVertexX),
179 fPrimaryVertexYmax(that.fPrimaryVertexYmax),
180 fPrimaryVertexYmin(that.fPrimaryVertexYmin),
181 fCutPrimaryVertexZ(that.fCutPrimaryVertexX),
182 fPrimaryVertexZmax(that.fPrimaryVertexZmax),
183 fPrimaryVertexZmin(that.fPrimaryVertexZmin),
184 fCutNContributors(that.fCutNContributors),
185 fNContributorsMax(that.fNContributorsMax),
186 fNContributorsMin(that.fNContributorsMin),
187 fCutMeanPt(that.fCutMeanPt),
188 fMeanPtMax(that.fMeanPtMax),
189 fMeanPtMin(that.fMeanPtMin),
190 fCutSPDvertexerAnomaly(that.fCutSPDvertexerAnomaly),
191 fCutSPDTRKVtxZ(that.fCutSPDTRKVtxZ),
192 fCutTPCmultiplicityOutliers(that.fCutTPCmultiplicityOutliers),
193 fCutTPCmultiplicityOutliersAOD(that.fCutTPCmultiplicityOutliersAOD),
194 fUseCentralityUnchecked(that.fUseCentralityUnchecked),
195 fCentralityPercentileMethod(that.fCentralityPercentileMethod),
196 fCutZDCtiming(that.fCutZDCtiming),
198 fCutImpactParameter(that.fCutImpactParameter),
199 fImpactParameterMin(that.fImpactParameterMin),
200 fImpactParameterMax(that.fImpactParameterMax),
201 fhistTPCvsGlobalMult(that.fhistTPCvsGlobalMult),
202 fData2011(that.fData2011),
203 fCheckPileUp(that.fCheckPileUp)
215 fUtils =
new AliAnalysisUtils();
216 fUtils->SetUseMVPlpSelection(kTRUE);
217 fUtils->SetUseOutOfBunchPileUp(kTRUE);
233 if (
fQA) {
fQA->SetOwner();
fQA->Delete();
delete fQA; }
240 if (
this==&that)
return *
this;
249 fQA =
static_cast<TList*
>(that.
fQA->Clone());
272 fUtils =
new AliAnalysisUtils();
273 fUtils->SetUseMVPlpSelection(kTRUE);
274 fUtils->SetUseOutOfBunchPileUp(kTRUE);
309 AliVEvent* vevent =
dynamic_cast<AliVEvent*
>(obj);
310 AliMCEvent* mcevent =
dynamic_cast<AliMCEvent*
>(objmc);
311 if (vevent)
return PassesCuts(vevent,mcevent);;
318 const AliVVertex* pvtx=
event->GetPrimaryVertex();
325 pvtxx = pvtx->GetX();
326 pvtxy = pvtx->GetY();
327 pvtxz = pvtx->GetZ();
328 ncontrib = pvtx->GetNContributors();
332 AliESDEvent* esdevent =
dynamic_cast<AliESDEvent*
>(event);
333 AliAODEvent* aodevent =
dynamic_cast<AliAODEvent*
>(event);
339 fUtils =
new AliAnalysisUtils();
340 fUtils->SetUseMVPlpSelection(kTRUE);
341 fUtils->SetUseOutOfBunchPileUp(kTRUE);
343 if(
fUtils->IsPileUpEvent(aodevent)) pass = kFALSE;
348 Int_t multGlobal = 0;
364 if (multTPC > ( 23+1.216*multGlobal)) pass = kFALSE;
365 if (multTPC < (-20+1.087*multGlobal)) pass = kFALSE;
375 Int_t nTracks(aodevent->GetNumberOfTracks());
376 for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) {
377 AliAODTrack* track =
dynamic_cast<AliAODTrack*
>(aodevent->GetTrack(iTracks));
379 if (!track || track->Pt() < .2 || track->Pt() > 5.0 || TMath::Abs(track->Eta()) > .8 || track->GetTPCNcls() < 70 || !track->GetDetPid() || track->GetDetPid()->GetTPCsignal() < 10.0)
continue;
380 if (track->TestFilterBit(1) && track->Chi2perNDF() > 0.2) multTPC++;
381 if (!track->TestFilterBit(16) || track->Chi2perNDF() < 0.1)
continue;
382 Double_t b[2] = {-99., -99.};
383 Double_t bCov[3] = {-99., -99., -99.};
384 AliAODTrack copy(*track);
385 if (copy.PropagateToDCA(event->GetPrimaryVertex(),
event->GetMagneticField(), 100., b, bCov) && TMath::Abs(b[0]) < 0.3 && TMath::Abs(b[1]) < 0.3) multGlobal++;
389 if(event->GetRunNumber() < 209122) {
390 if(!
fData2011 && (multTPC < (-40.3+1.22*multGlobal) || multTPC > (32.1+1.59*multGlobal))) pass = kFALSE;
391 else if(
fData2011 && (multTPC < (-36.73 + 1.48*multGlobal) || multTPC > (62.87 + 1.78*multGlobal))) pass = kFALSE;
393 if(multTPC < (-15.5+1.16*multGlobal) || multTPC > (15.8+1.28*multGlobal)) pass = kFALSE;
401 QAbefore(1)->Fill(multGlobal,multTPC);
427 AliCentrality* centr = esdevent->GetCentrality();
449 fMultSelection = (AliMultSelection *) esdevent->FindListObject(
"MultSelection");
459 const AliESDVertex* sdpvertex = esdevent->GetPrimaryVertexSPD();
460 if (sdpvertex->GetNContributors()<1) pass=kFALSE;
461 if (sdpvertex->GetDispersion()>0.04) pass=kFALSE;
462 if (sdpvertex->GetZRes()>0.25) pass=kFALSE;
463 const AliESDVertex* tpcvertex = esdevent->GetPrimaryVertexTPC();
464 if (tpcvertex->GetNContributors()<1) pass=kFALSE;
465 const AliMultiplicity* tracklets = esdevent->GetMultiplicity();
466 if (tpcvertex->GetNContributors()<(-10.0+0.25*tracklets->GetNumberOfITSClusters(0)))
473 if (!
fTrigAna.ZDCTimeTrigger(esdevent))
483 Double_t refMult =
RefMult(event,mcevent);
484 if (refMult < fRefMultMin || refMult >=
fRefMultMax )
493 Double_t tVtxZ = aodevent->GetPrimaryVertex()->GetZ();
494 Double_t tSPDVtxZ = aodevent->GetPrimaryVertexSPD()->GetZ();
495 if( TMath::Abs(tVtxZ-tSPDVtxZ) > 0.5 ) pass = kFALSE;
498 AliCentrality* centr = ((AliVAODHeader*)aodevent->GetHeader())->GetCentralityP();
500 Double_t v0Centr = centr->GetCentralityPercentile(
"V0M");
501 Double_t trkCentr = centr->GetCentralityPercentile(
"TRK");
502 if(TMath::Abs(v0Centr-trkCentr) > 5) pass = kFALSE;
522 fMultSelection = (AliMultSelection *) aodevent->FindListObject(
"MultSelection");
525 AliWarning(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
538 Int_t ntracks=
event->GetNumberOfTracks();
540 for (Int_t i=0; i<ntracks; i++)
542 AliVParticle* track =
event->GetTrack(i);
543 if (!track)
continue;
544 Bool_t localpass=kTRUE;
548 meanpt += track->Pt();
552 if (nselected) meanpt=meanpt/nselected;
553 if (meanpt<fMeanPtMin || meanpt >=
fMeanPtMax) pass=kFALSE;
558 Double_t gImpactParameter = 0.;
560 AliCollisionGeometry* headerH =
dynamic_cast<AliCollisionGeometry*
>(
dynamic_cast<AliMCEvent*
>(mcevent)->GenEventHeader());
562 gImpactParameter = headerH->ImpactParameter();
570 QAafter(1)->Fill(multGlobal,multTPC);
580 AliESDEvent* esdEvent =
dynamic_cast<AliESDEvent*
>(event);
581 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(event);
587 AliCentrality* centr = NULL;
589 centr = esdEvent->GetCentrality();
591 centr = ((AliVAODHeader*)aodEvent->GetHeader())->GetCentralityP();
593 if (!centr)
return -1.;
604 fMultSelection = (AliMultSelection *) esdEvent->FindListObject(
"MultSelection");
606 centrality = lPercentile;
610 fMultSelection = (AliMultSelection *) aodEvent->FindListObject(
"MultSelection");
613 AliWarning(
"AliMultSelection not found, did you Run AliMultSelectionTask? \n");
615 centrality = lPercentile;
655 AliESDVZERO* vzero = NULL;
656 AliESDEvent* esdevent =
dynamic_cast<AliESDEvent*
>(event);
678 if (!esdevent)
return 0;
679 vzero=esdevent->GetVZEROData();
680 if (!vzero)
return 0;
681 return TMath::Nint(vzero->GetMTotV0A()+vzero->GetMTotV0C());
685 if (!esdevent)
return 0;
686 const AliMultiplicity* mult = esdevent->GetMultiplicity();
688 return mult->GetNumberOfITSClusters(1);
694 for (Int_t i=0; i<numberOfInputObjects; i++) {
706 Bool_t adddirstatus = TH1::AddDirectoryStatus();
707 TH1::AddDirectory(kFALSE);
708 fQA =
new TList();
fQA->SetOwner();
709 fQA->SetName(Form(
"%s QA",GetName()));
710 TList* before =
new TList(); before->SetOwner();
711 before->SetName(
"before");
712 TList* after =
new TList(); after->SetOwner();
713 after->SetName(
"after");
716 before->Add(
new TH1F(
"zvertex",
";z;event cout",500,-15.,15.));
717 after->Add(
new TH1F(
"zvertex",
";z;event cout",500,-15.,15.));
718 before->Add(
new TH2F(
"fTPCvsGlobalMult",
"TPC only vs Global track multiplicity;global;TPC only",600,0,3000,600,0,4000));
719 after->Add(
new TH2F(
"fTPCvsGlobalMult",
"TPC only vs Global track multiplicity;global;TPC only",600,0,3000,600,0,4000));
720 TH1::AddDirectory(adddirstatus);
737 if (list->GetEntries()<1)
return 0;
739 while ( (obj = dynamic_cast<AliFlowEventCuts*>(next())) )
741 if (obj==
this)
continue;
743 listwrapper.Add(obj->
GetQA());
744 fQA->Merge(&listwrapper);
Float_t fCentralityPercentileMax
Double_t fPrimaryVertexZmax
AliESDtrackCuts::MultEstTrackType fRefMultMethodAliESDtrackCuts
Float_t GetCentrality(AliVEvent *event, AliMCEvent *mcEvent)
Double_t fPrimaryVertexXmax
Bool_t fData2011
correlation between TPCMult and GlobalMult
TObject * GetInputObject(Int_t i)
Bool_t fCutPrimaryVertexY
Long64_t Merge(TCollection *list)
Bool_t fUseNewCentralityFramework
Bool_t fCutTPCmultiplicityOutliersAOD
static AliFlowTrackCuts * GetStandardGlobalTrackCuts2010()
AliFlowTrackCuts * fStandardTPCcuts
AliFlowTrackCuts * fMeanPtCuts
Double_t fPrimaryVertexYmin
Double_t fPrimaryVertexYmax
AliFlowEventCuts & operator=(const AliFlowEventCuts &someCuts)
Int_t Count(AliVEvent *event=NULL)
AliAnalysisUtils * fUtils
virtual Bool_t IsSelected(TObject *obj, Int_t id=-666)
void SetParamType(trackParameterType paramType)
const char * CentrMethName(refMultMethod method) const
refMultMethod fRefMultMethod
Bool_t PassesCuts(AliVEvent *event, AliMCEvent *mcevent)
Bool_t fCutSPDvertexerAnomaly
Int_t GetNumberOfInputObjects() const
static AliFlowTrackCuts * GetStandardTPCStandaloneTrackCuts()
Int_t RefMult(AliVEvent *event, AliMCEvent *mcEvent=0x0)
static AliFlowTrackCuts * GetStandardTPCStandaloneTrackCuts2010()
Bool_t fCutPrimaryVertexZ
void SetPtMin(Double_t min)
ClassImp(AliFlowEventCuts) AliFlowEventCuts
refMultMethod fCentralityPercentileMethod
TH2F * fhistTPCvsGlobalMult
Bool_t fCutPrimaryVertexX
new centrality framework
AliTriggerAnalysis fTrigAna
Double_t fPrimaryVertexZmin
AliMultSelection * fMultSelection
analysis utils object
Bool_t fCutCentralityPercentile
Bool_t fUseAliESDtrackCutsRefMult
Double_t fImpactParameterMax
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
AliFlowTrackCuts * fStandardGlobalCuts
Bool_t fUseCentralityUnchecked
AliFlowTrackCuts * fRefMultCuts
Bool_t fCutNumberOfTracks
static AliFlowEventCuts * StandardCuts()
Double_t fImpactParameterMin
virtual ~AliFlowEventCuts()
Double_t fPrimaryVertexXmin
virtual Bool_t IsSelected(TObject *obj, TObject *objmc)
Float_t fCentralityPercentileMin
Bool_t fCutImpactParameter
Bool_t fCutTPCmultiplicityOutliers
void SetEtaRange(Float_t r1, Float_t r2)