-#ifndef ALIEPSELECTIONTASK_H
-#define ALIEPSELECTIONTASK_H
+#ifndef AliEPSELECTIONTASK_H
+#define AliEPSELECTIONTASK_H
/* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
class TList;
class TString;
class TVector2;
-class TObjArray;
class AliESDEvent;
class AliESDtrackCuts;
class AliESDtrack;
class AliEventplane;
class AliOADBContainer;
+class AliVTrack;
+class THnSparse;
+class TProfile;
class AliEPSelectionTask : public AliAnalysisTaskSE {
public:
+
+ enum ResoMethod{kRandom,kEta,kCharge};
AliEPSelectionTask();
AliEPSelectionTask(const char *name);
virtual void Terminate(Option_t *option);
TVector2 GetQ(AliEventplane* EP, TObjArray* event);
- void GetQsub(TVector2& Qsub1, TVector2& Qsub2, TObjArray* event);
- Double_t GetWeight(AliESDtrack* track);
- Double_t GetPhiWeight(AliESDtrack* track);
-
- virtual void SetDebugLevel(Int_t level) {fDebug = level;}
- void SetInput(const char* input) {fAnalysisInput = input;}
- void SetUseMCRP() {fUseMCRP = kTRUE;}
- void SetUsePhiWeight() {fUsePhiWeight = kTRUE;}
- void SetUsePtWeight() {fUsePtWeight = kTRUE;}
- void SetSaveTrackContribution() {fSaveTrackContribution = kTRUE;}
+ void GetQsub(TVector2& Qsub1, TVector2& Qsub2, TObjArray* event,AliEventplane* EP);
+ Double_t GetWeight(TObject* track1);
+ Double_t GetPhiWeight(TObject* track1);
+ void Recenter(Int_t var, Double_t * values);
+
+ virtual void SetDebugLevel(Int_t level) {fDebug = level;}
+ void SetInput(const char* input) {fAnalysisInput = input;}
+ void SetUseMCRP() {fUseMCRP = kTRUE;}
+ void SetUsePhiWeight(Bool_t usephi = kTRUE){fUsePhiWeight = usephi;}
+ void SetUsePtWeight() {fUsePtWeight = kTRUE;}
+ void SetUseRecentering() {fUseRecentering = kTRUE;}
+ void SetSaveTrackContribution() {fSaveTrackContribution = kTRUE;}
void SetTrackType(TString tracktype);
void SetPhiDist();
+ void SetQvectorDist();
void SetPersonalESDtrackCuts(AliESDtrackCuts* trackcuts);
+ void SetPersonalAODtrackCuts(UInt_t filterbit = 1, Float_t etalow = -0.8, Float_t etaup = 0.8, Float_t ptlow = 0.15, Float_t ptup = 20., Int_t ntpc = 50);
void SetPersonalPhiDistribution(const char* filename, char* listname);
+ void SetEtaGap(Float_t etagap) {fEtaGap = etagap;}
+ void SetSubeventsSplitMethod(Int_t method) {fSplitMethod = method;}
private:
AliEPSelectionTask(const AliEPSelectionTask& ep);
AliEPSelectionTask& operator= (const AliEPSelectionTask& ep);
+ TObjArray* GetAODTracksAndMaxID(AliAODEvent* aod, Int_t& maxid);
+ void SetOADBandPeriod();
+ TH1F* SelectPhiDist(AliVTrack *track);
+ TObjArray* GetTracksForLHC11h(AliESDEvent* esd);
+
TString fAnalysisInput; // "ESD", "AOD"
TString fTrackType; // "GLOBAL", "TPC"
+ TString fPeriod; // "LHC11h","LHC10h"
+ Double_t fCentrality; // centrality percentile from "V0M"
Bool_t fUseMCRP; // i.e. usable for Therminator, when MC RP is provided
Bool_t fUsePhiWeight; // use of phi weights
Bool_t fUsePtWeight; // use of pT weights
+ Bool_t fUseRecentering; // use of mean & rms of q vector components for recentering
Bool_t fSaveTrackContribution; // storage of contribution of each track to Q-Vector
- Bool_t fuserphidist; // bool, if personal phi distribution should be used
- Bool_t fusercuts; // bool, if personal cuts should be used
- Int_t frunNumber; // runnumber
+ Bool_t fUserphidist; // bool, if personal phi distribution should be used
+ Bool_t fUsercuts; // bool, if personal cuts should be used
+ Int_t fRunNumber; // runnumber
+ UInt_t fAODfilterbit; // AOD filter bit for AOD track selection
+ Float_t fEtaGap; // Eta Gap between Subevent A and B
+ Int_t fSplitMethod; // Splitting Method for subevents
- AliESDtrackCuts* fESDtrackCuts; //! track cuts
+
+ AliESDtrackCuts* fESDtrackCuts; // track cuts
- TObjArray* ftracklist; //! list of accepted tracks for Q-Vector
AliOADBContainer* fEPContainer; //! OADB Container
- TH1F* fPhiDist; // Phi distribution used to calculate phi weights
+ AliOADBContainer* fQxContainer; //! OADB Container for Q_x vector
+ AliOADBContainer* fQyContainer; //! OADB Container for Q_y vector
+ TH1F* fPhiDist[4]; // array of Phi distributions used to calculate phi weights
+ THnSparse *fSparseDist; //! THn for eta-charge phi-weighting
+ TProfile* fQDist[2]; // array of TProfiles with mean+rms for recentering
+ TH1F *fHruns; // information about runwise statistics of phi-weights
TVector2* fQVector; //! Q-Vector of the event
Double_t* fQContributionX; //! array of the tracks' contributions to X component of Q-Vector - index = track ID
TH2F* fHOutDiff; //! control histogram: Difference of MC RP and EP - only filled if fUseMCRP is true!
TH2F* fHOutleadPTPsi; //! control histogram: emission angle of leading pT track vs EP angle
- ClassDef(AliEPSelectionTask,3);
+ ClassDef(AliEPSelectionTask,4);
};
#endif