]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliEPSelectionTask.h
memory leak fix in AliFileMerger
[u/mrichter/AliRoot.git] / ANALYSIS / AliEPSelectionTask.h
index 7f564951a8a71fcfb3ad4af97e9e1d244fcf47c1..3d3b2e56da5b5b08a4ed290c09f2ecd8127d5a78 100644 (file)
@@ -1,5 +1,5 @@
-#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                               */
@@ -23,10 +23,15 @@ 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);
@@ -38,40 +43,63 @@ class AliEPSelectionTask : public AliAnalysisTaskSE {
   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
+  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
   
   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