28 #include "Riostream.h"
36 #include "TTimeStamp.h"
37 #include "AliAODHandler.h"
40 #include "AliAnalysisManager.h"
41 #include "AliAnalysisTaskSE.h"
42 #include "AliESDtrackCuts.h"
45 #include "AliESDEvent.h"
46 #include "AliESDInputHandler.h"
49 #include "AliAODEvent.h"
50 #include "AliAODInputHandler.h"
53 #include "AliMCEventHandler.h"
54 #include "AliMCEvent.h"
57 #include "AliCFManager.h"
60 #include "AliGenCocktailEventHeader.h"
61 #include "AliGenHijingEventHeader.h"
62 #include "AliGenGeVSimEventHeader.h"
63 #include "AliGenEposEventHeader.h"
66 #include "TObjArray.h"
77 #include "AliAODHeader.h"
78 #include "AliAODVertex.h"
79 #include "AliHeader.h"
89 fAnalysisType("AUTOMATIC"),
105 fLoadCandidates(kFALSE),
117 fPhiMax(TMath::TwoPi()),
124 fHistWeightvsPhiMin(0.),
125 fHistWeightvsPhiMax(3.),
130 fAfterburnerOn(kFALSE),
131 fNonFlowNumberOfTrackClones(0),
139 fShuffleTracks(kFALSE),
143 AliDebug(2,
"AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent()");
150 fAnalysisType(
"AUTOMATIC"),
157 fCutContainer(new
TList()),
166 fLoadCandidates(bCandidates),
178 fPhiMax(TMath::TwoPi()),
185 fHistWeightvsPhiMin(0.),
186 fHistWeightvsPhiMax(3.),
191 fAfterburnerOn(kFALSE),
192 fNonFlowNumberOfTrackClones(0),
200 fShuffleTracks(kFALSE),
204 AliDebug(2,
"AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent(const char *name, Bool_t on, UInt_t iseed)");
208 int availableINslot=1;
210 if (strcmp(RPtype,
"FMD")==0) {
211 DefineInput(availableINslot++, TList::Class());
215 DefineInput(availableINslot, TObjArray::Class());
219 DefineOutput(1, AliFlowEventSimple::Class());
220 DefineOutput(2, TList::Class());
252 Int_t run = fESD->GetRunNumber();
253 AliInfo(Form(
"Stariting run #%i",run));
260 AliDebug(2,
"AliAnalysisTaskFlowEvent::CreateOutputObjects()");
264 AliError(
"WRONG ANALYSIS TYPE! only ESD, ESDMCkineESD, ESDMCkineMC, AOD, MC and AUTOMATIC are allowed.");
297 fQAList->SetName(Form(
"%s QA",GetName()));
301 fQAList->Add(
new TH1F(
"event plane angle",
"event plane angle;angle [rad];",100,0.,TMath::TwoPi()));
313 AliMCEvent* mcEvent = MCEvent();
316 AliMultiplicity* myTracklets = NULL;
317 AliESDPmdTrack* pmdtracks = NULL;
319 int availableINslot=1;
323 AliError(
"cuts not set");
355 AliError(
"ERROR: No pointer to correction framework cuts! ");
360 AliError(
"ERROR: Could not retrieve MC event");
367 AliInfo(Form(
"Number of MC particles: %d", mcEvent->GetNumberOfTracks()));
370 if (!
fCFManager1->CheckEventCuts(AliCFManager::kEvtGenCuts,mcEvent))
372 AliWarning(
"Event does not pass multiplicity cuts");
return;
383 AliError(
"ERROR: No pointer to correction framework cuts!");
388 AliError(
"ERROR: ESD not available");
393 AliInfo(Form(
"ESD has %d tracks", fInputEvent->GetNumberOfTracks()));
396 if (!
fCFManager1->CheckEventCuts(AliCFManager::kEvtRecCuts,myESD))
398 AliWarning(
"Event does not pass multiplicity cuts");
return;
405 else if (
fRPType ==
"TPCOnly") {
408 else if (
fRPType ==
"TPCHybrid") {
411 else if (
fRPType ==
"Tracklet"){
415 TList* dataFMD =
dynamic_cast<TList*
>(GetInputData(availableINslot++));
417 cout<<
" No dataFMD "<<endl;
420 TH2F* histFMD =
dynamic_cast<TH2F*
>(dataFMD->FindObject(
"dNdetadphiHistogramTrVtx"));
422 cout<<
"No histFMD"<<endl;
443 AliError(
"ERROR: No pointer to correction framework cuts! ");
448 AliError(
"ERROR: ESD not available");
451 AliInfo(Form(
"There are %d tracks in this event", fInputEvent->GetNumberOfTracks()));
455 AliError(
"ERROR: Could not retrieve MC event");
463 if (!
fCFManager1->CheckEventCuts(AliCFManager::kEvtRecCuts,myESD))
465 AliWarning(
"Event does not pass multiplicity cuts");
return;
488 AliError(
"ERROR: AOD not available");
491 AliInfo(Form(
"AOD has %d tracks", myAOD->GetNumberOfTracks()));
502 for(
int iCand=0; iCand!=candidates->GetEntriesFast(); ++iCand ) {
536 AliWarning(
"FlowEvent cut on multiplicity");
return;
565 TH1* h1 =
static_cast<TH1*
>(
fQAList->FindObject(
"event plane angle"));
void SetMassMin(Double_t i)
virtual void UserExec(Option_t *option)
void FindDaughters(Bool_t keepDaughtersInRPselection=kFALSE)
Float_t GetCentrality(AliVEvent *event, AliMCEvent *mcEvent)
AliAnalysisTaskFlowEvent()
Int_t GetNumberOfRPs() const
void AddFlow(Double_t v1, Double_t v2, Double_t v3, Double_t v4, Double_t v5)
Int_t fNonFlowNumberOfTrackClones
Int_t GetReferenceMultiplicity(AliVEvent *event, AliMCEvent *mcEvent)
AliFlowTrackCuts * fCutsRP
void SetNbinsPhi(Int_t i)
void SetPhiMin(Double_t i)
void SetMCReactionPlaneAngle(const AliMCEvent *mcEvent)
void SetHistWeightvsPhiMax(Double_t d)
Double_t fHistWeightvsPhiMin
AliCFManager * fCFManager2
void SetEtaMax(Double_t i)
void SetReferenceMultiplicity(Int_t m)
AliCFManager * fCFManager1
Bool_t InRPSelection() const
virtual ~AliAnalysisTaskFlowEvent()
AliFlowTrack * GetTrack(Int_t i)
AliFlowTrackCuts * fCutsPOI
AliFlowEventCuts * fCutsEvent
void SetForRPSelection(Bool_t b=kTRUE)
Int_t GetNDaughters(void) const
void SetNumberOfRPs(Int_t nr)
virtual void Terminate(Option_t *)
void Fill(AliFlowTrackCuts *rpCuts, AliFlowTrackCuts *poiCuts)
void SetShuffleTracks(Bool_t b)
void CloneTracks(Int_t n)
void SetNbinsEta(Int_t i)
void SetNbinsMult(Int_t i)
void SetMassMax(Double_t i)
static AliFlowCommonConstants * GetMaster()
void SetNbinsMass(Int_t i)
void SetCentrality(Double_t c)
void DefineDeadZone(Double_t etaMin, Double_t etaMax, Double_t phiMin, Double_t phiMax)
void SetMultMax(Double_t i)
Int_t GetIDDaughter(Int_t value) const
void SetPtMax(Double_t i)
void SetRunsMuon(const AliInputEventHandler *eventHandler)
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
Bool_t IsSetMCReactionPlaneAngle() const
Double_t fHistWeightvsPhiMax
void SetPhiMax(Double_t i)
void SetEtaMin(Double_t i)
void SetForPOISelection(Bool_t b=kTRUE)
void SetHistWeightvsPhiMin(Double_t d)
void TagSubeventsInEta(Double_t etaMinA, Double_t etaMaxA, Double_t etaMinB, Double_t etaMaxB)
Double_t GetMCReactionPlaneAngle() const
void SetMultMin(Double_t i)
virtual Bool_t IsSelected(TObject *obj, TObject *objmc)
void SetPtMin(Double_t i)
virtual void UserCreateOutputObjects()
ClassImp(AliAnalysisTaskFlowEvent) AliAnalysisTaskFlowEvent
void InsertTrack(AliFlowTrack *)
AliFlowEvent * fFlowEvent
Int_t NumberOfTracks() const