]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
update to run TPC+ITS analysis
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliAnalysisTaskGammaConversion.h
index 6832f905482e9007e285eda550838f81b39a64f2..b1db962e9b7cd2714b88a8159c01663171d95210 100644 (file)
@@ -13,6 +13,8 @@
 #include "AliAnalysisTaskSE.h"
 #include <vector>
 #include "AliV0Reader.h"
+#include "AliGammaConversionBGHandler.h"
+//#include "TRandom3.h"
 //#include "AliCFManager.h"  // for CF
 //#include "AliCFContainer.h"   // for CF
 
@@ -20,7 +22,9 @@ class AliGammaConversionAODObject;
 class TNtuple;
 class AliGammaConversionHistograms;
 class AliESDv0;
+class AliV0;
 class AliKFParticle;
+class AliKFVertex;
 class AliESDInputHandler;
 class AliESDEvent;
 class AliAODEvent;
@@ -28,13 +32,16 @@ class AliMCEvent;
 class TList;
 class AliStack;
 class AliESDtrackCuts;
+class AliTriggerAnalysis;
 class AliCFManager; // for CF
 class AliCFContainer; // for CF
+class TRandom3;
 
 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
 {
        
  public:
+  typedef enum { kProcSD, kProcDD, kProcND, kProcUnknown, kNProcs } ProcType_t; 
   AliAnalysisTaskGammaConversion();
   AliAnalysisTaskGammaConversion(const char* name);
   virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
@@ -43,15 +50,18 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   virtual void UserCreateOutputObjects();
   virtual void Init();
   virtual void LocalInit() {Init();}
-  virtual void Exec(Option_t *option);
+  virtual void UserExec(Option_t *option);
   virtual void Terminate(Option_t *option);
-  virtual void ConnectInputData(Option_t *);
-               
+  //virtual void ConnectInputData(Option_t * option);
+  void CheckMesonProcessTypeEventQuality(Int_t evtQ);
+  Int_t GetProcessType(const AliMCEvent * mcEvt) ;
   void ProcessMCData();
   void ProcessV0sNoCut();
   void ProcessV0s();
   void ProcessGammasForNeutralMesonAnalysis();
-               
+  void ProcessGammasForOmegaMesonAnalysis();
+  //  void ProcessConvPHOSGammasForNeutralMesonAnalysis();
+  void RecalculateV0ForGamma();
   // for CF
   void SetCFManager(AliCFManager * const io) {fCFManager = io;};
   AliCFManager *GetCFManager() const {return fCFManager;}
@@ -60,10 +70,12 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   // AOD
   TString GetAODBranchName() const {return  fAODBranchName;}
   void SetAODBranchName(TString name)  {fAODBranchName = name ;}       
+  void SetForceAOD(Bool_t forceAOD ) { fKFForceAOD = forceAOD; }
   void FillAODWithConversionGammas();
   // end AOD
                
-               
+  static Bool_t IsGoodImpPar(const AliESDtrack *const track);
+       
   // for GammaJetAnalysis
   void ProcessGammasForGammaJetAnalysis();
   void CreateListOfChargedParticles();
@@ -84,11 +96,15 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
 
                
   void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
+  void SetTriggerCINT1B(Bool_t flag){fTriggerCINT1B=flag;}
   void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
   void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
+  void SetDoOmegaMeson(Bool_t flag){fDoOmegaMeson=flag;}
+  void SetDoNeutralMesonV0MCCheck(Bool_t flag){fDoNeutralMesonV0MCCheck=flag;}
   void SetDoJet(Bool_t flag){fDoJet=flag;}
   void SetDoChic(Bool_t flag){fDoChic=flag;}
-               
+  void SetRecalculateV0ForGamma(Bool_t flag){fRecalculateV0ForGamma=flag;}             
+
   void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
   void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
   void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
@@ -97,18 +113,18 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
   void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
   void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
-  void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}
+  void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader; fV0Reader->SetESDtrackCuts(fEsdTrackCuts);}
   void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
   void CalculateBackground();
   void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
   void FillNtuple();
-  Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
+  Double_t GetMCOpeningAngle(const TParticle* const daughter0,const TParticle* const daughter1) const;
   void CheckV0Efficiency();
-               
+  void SetDeltaAODFileName(TString fn) { fKFDeltaAODFileName = fn; };
                
   //////////////////Chi_c Analysis////////////////////////////
-  void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight);        
-  double GetSigmaToVertex(AliESDtrack* t);
+  void GetPID(const AliESDtrack *track, Stat_t &pid, Stat_t &weight);  
+  double GetSigmaToVertex(const AliESDtrack* t);
   void ElectronBackground(TString hBg, TClonesArray e);
   void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
   void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
@@ -119,30 +135,61 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   ///////////////////////////////////////////////////////////////
 
   void SetDoCF(Bool_t flag){fDoCF = flag;}
-               
+
+  void SetUseChargedTracksMultiplicityForBG(Bool_t flag){fUseTrackMultiplicityForBG = flag;}           
+
+  void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
+
+  void MoveParticleAccordingToVertex(AliKFParticle * particle,const AliGammaConversionBGHandler::GammaConversionVertex *vertex);
+
+  void SetApplyChi2Cut(Bool_t flag){fApplyChi2Cut = flag;}
+
+  void SetDoRotation(Bool_t flag){fDoRotation = flag;}
+
+  void SetPMDegreesBG(Int_t deg){fNDegreesPMBackground=deg;}
+
+  void SetNumberOfRotationsBG(Int_t nRot){fNRandomEventsForBG=nRot;}
+
+  void RotateKFParticle(AliKFParticle * kfParticle,Double_t angle);
+
+  void SetCheckBGProbability(Bool_t flag){fCheckBGProbability = flag;}
+
+  void SetRemovePileUp(Bool_t removePileUp) { fRemovePileUp = removePileUp; }
+
+  void SetSelectV0AND(Bool_t selectV0AND) { fSelectV0AND = selectV0AND; }
+
  private:
   AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
   AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
+  
+  /// Add reconstructed pions to aod
+  void AddPionToAOD(const AliKFParticle * const pionkf, Double_t mass, Int_t daughter1, Int_t daughter2); 
+  void AddOmegaToAOD(const AliKFParticle * const omegakf, Double_t mass, Int_t daughter1, Int_t daughter2); 
                
   // for CF
   enum{
     kStepGenerated = 0,
     kStepReconstructable = 1, 
-    kStepLikeSign = 2,
-    kStepTPCRefit = 3,
-    kStepKinks = 4,
-    kStepGetOnFly = 5,
-    kStepNContributors = 6,
-    kStepTPCPID = 7,
-    kStepR = 8,
-    kStepLine = 9,
-    kStepZ = 10,
-    kStepNDF = 11,
-    kStepChi2 = 12,
-    kStepEta = 13,
-    kStepPt = 14
+    kStepGetOnFly = 2,
+    kStepLikeSign = 3,
+    kStepTPCRefit = 4,
+    kStepKinks = 5,
+    kStepdEdxElectronSelection = 6,
+    kStepdEdxPpionRejection = 7,
+    kStepNContributors = 8,
+    kStepTPCPID = 9,
+    kStepR = 10,
+    kStepLine = 11,
+    kStepZ = 12,
+    kStepMinClsTPC = 13,
+    kStepSinglePt = 14,
+    kStepNDF = 15,
+    kStepChi2 = 16,
+    kStepEta = 17,
+    kStepPt = 18,
+    kStepTrueGamma = 19
   };
-
+  
   AliV0Reader* fV0Reader; // The V0 reader object 
                
   AliStack * fStack; // pointer to the MC particle stack
@@ -156,13 +203,17 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
                
                
   AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
-               
+  Bool_t fTriggerCINT1B; //Flag to select trigger CINT1B
   Bool_t fDoMCTruth; // Flag to switch on/off MC truth 
   Bool_t fDoNeutralMeson; // flag
+  Bool_t fDoOmegaMeson; // flag
   Bool_t fDoJet; // flag
   Bool_t fDoChic; // flag
+  Bool_t fRecalculateV0ForGamma;//flag
                
   TClonesArray * fKFReconstructedGammasTClone; //! transient
+  TClonesArray * fKFReconstructedPi0sTClone; //! transient
+  TClonesArray * fKFRecalculatedGammasTClone; //! transient
   TClonesArray * fCurrentEventPosElectronTClone; //! transient
   TClonesArray * fCurrentEventNegElectronTClone; //! transient
   TClonesArray * fKFReconstructedGammasCutTClone; //! transient
@@ -173,6 +224,15 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   vector<Int_t> fElectronv1; // vector containing index of electron 1
   vector<Int_t> fElectronv2; // vector containing index of electron 2
                
+  vector<Int_t> fGammav1; // vector containing index of gamma 1
+  vector<Int_t> fGammav2; // vector containing index of gamma 2
+
+  vector<Int_t> fElectronRecalculatedv1; // vector containing index of electron 1
+  vector<Int_t> fElectronRecalculatedv2; // vector containing index of electron 2
+               
+  //  AliESDpid * fESDpid; // esd pid
+
+
   ///////Chi_c Analysis///////////////////////////
   //  vector<AliESDtrack*> fCurrentEventPosElectron;       // comment here
   //  vector<AliESDtrack*> fCurrentEventNegElectron;       // comment here
@@ -217,12 +277,25 @@ class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
   Double_t fHighPtMapping; //! transient
   Bool_t fDoCF; //! transient
                
-  TClonesArray* fAODBranch ;        //! selected particles branch
+  TClonesArray * fAODGamma; //TClonesArray for gammas to put in AOD
+  TClonesArray * fAODPi0; //TTClonesArray for Pi0s to put in AOD
+  TClonesArray * fAODOmega; //TTClonesArray for omegas to put in AOD
   TString fAODBranchName; // New AOD branch name
-               
-  //  TClonesArray *fAODObjects;
-               
-  ClassDef(AliAnalysisTaskGammaConversion, 5); // Analysis task for gamma conversions
+  Bool_t fKFForceAOD;  //Set the Analysis Manager FillAOD variable to true every event
+  TString fKFDeltaAODFileName; //! File name for delta AOD (if any)
+  Bool_t fDoNeutralMesonV0MCCheck; //flag
+  Bool_t fUseTrackMultiplicityForBG; //flag
+  Bool_t fMoveParticleAccordingToVertex; //flag
+  Bool_t fApplyChi2Cut; //flag
+  Int_t fNRandomEventsForBG; //number of random events to use in rotation method
+  Int_t fNDegreesPMBackground; // number of degree window to rotate particles for rotation method
+  Bool_t fDoRotation; //flag
+  Bool_t fCheckBGProbability; //flag
+  vector<Int_t>fKFReconstructedGammasV0Index; // index of the reconstructed v0s
+  Bool_t fRemovePileUp;                 // Remove Pile Up
+  Bool_t fSelectV0AND;                 // Select V0AND
+  AliTriggerAnalysis *fTriggerAnalysis; //! Trigger Analysis for Normalisation
+  ClassDef(AliAnalysisTaskGammaConversion, 14); // Analysis task for gamma conversions
 };
 
 #endif //ALIANALYSISTASKGAMMA_H