ROOT logo
/* Copyright(c) 1998-2013, ALICE Experiment at CERN, All rights reserved.  
 * See cxx source for full Copyright notice  
 *
 * AliAnalysisTaskV0ChCorrelations class
 *
 * The task selects candidates for K0s, Lambdas and AntiLambdas (trigger particles)
 * and calculates correlations with charged unidentified particles (associated particles) in phi and eta. 
 * The task works with AOD events only and containes also mixing for acceptance corrections.
 * Edited by Marek Bombara, last update January 2013, Marek.Bombara@cern.ch
 */

#ifndef ALIANALYSISTASKV0CHCORRELATIONS_H
#define ALIANALYSISTASKV0CHCORRELATIONS_H

class TH1F;
class TH1D;
class TH2F;
class THnSparse;
class TList;
class AliPIDResponse;
class AliEventPoolManager;

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

class AliAnalysisTaskV0ChCorrelations : public AliAnalysisTaskSE {
public:
   AliAnalysisTaskV0ChCorrelations(const char *name = "AliAnalysisTaskV0ChCorrelations");
   //AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&);            //not implemented
   //AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented 
   virtual ~AliAnalysisTaskV0ChCorrelations();

   // Setting the global variables
   void SetAnalysisMC(Bool_t AnalysisMC = kTRUE) {fAnalysisMC = AnalysisMC;}
   void SetDcaDToPV(Float_t DcaDToPV = 0.1) {fDcaDToPV = DcaDToPV;}
   void SetDcaV0D(Float_t DcaV0D = 1.0) {fDcaV0D = DcaV0D;}
   void SetWithChCh(Bool_t WithChCh = kTRUE) {fWithChCh = WithChCh;}
   void SetOStatus(Int_t OStatus = 1) {fOStatus = OStatus;}

   // Getting the global variables
   Float_t GetDcaDToPV() { return fDcaDToPV; }
   Float_t GetDcaV0D() { return fDcaV0D; }
   Bool_t GetWithChCh() { return fWithChCh; }
   Int_t GetOStatus() { return fOStatus; }

   virtual void     UserCreateOutputObjects();
   virtual void     UserExec(Option_t *option);
   virtual void     Terminate(Option_t *);

   Bool_t IsMyGoodPrimaryTrack(const AliAODTrack* aodtrack);
   Bool_t IsMyGoodDaughterTrack(const AliAODTrack* aodtrack);
   Bool_t IsMyGoodV0(const AliAODEvent* aod, const AliAODv0* aodv0, const AliAODTrack* tr1, const AliAODTrack* tr2, Int_t osta);
   void RemovingInjectedSignal(TObjArray* tracks, TObject* mcObj, Int_t maxLabel);

private:

   AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&);            //not implemented
   AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented 

   Bool_t 		   fAnalysisMC; // enable MC study
   Bool_t          fFillMixed;  // enable event mixing (default: ON)
   Int_t           fMixingTracks;      // size of track buffer for event mixing
   AliEventPoolManager*          fPoolMgr;         //! event pool manager

   Float_t         fDcaDToPV;   // DCA of the daughter to primary vertex
   Float_t         fDcaV0D;     // DCA between daughters
   Bool_t          fWithChCh;   // Also do ChCh correlations - for the cross-check
   Int_t           fOStatus;   // checks for online and offline V0s 

   TList           *fOutput;        // Output list
   AliPIDResponse  *fPIDResponse;   // PID response

   TH2F            *fHistCentVtx; // centrality vs. z vertex - to see statistics for mixing
   TH1F            *fHistMultiMain; // multiplicity of main events
   
   THnSparseF      *fHistMassK0;       // K0 mass
   THnSparseF      *fHistMassLambda;     // Lambda mass
   THnSparseF      *fHistMassAntiLambda;   // AntiLambda mass
   
   THnSparseF	   *fHistdPhidEtaSib;   // dPhi vs. dEta, same event
   THnSparseF	   *fHistdPhidEtaMix;   // dPhi vs. dEta, mixed events
   THnSparseF	   *fHistNTrigSib;   // pt of trigger particles, same event

   THnSparseF    *fHistMCPtCentTrig;   // pt vs. centrality of MC trigger particles
   THnSparseF    *fHistRCPtCentTrig;   // pt vs. centrality of reconstructed trigger particles
   TH2D	           *fHistMCPtCentAs;   // pt vs. centrality of MC associated particles
   TH2D	           *fHistRCPtCentAs;   // pt vs. centrality of reconstructed associated particles
   TH2D	           *fHistRCPtCentAll;   // pt vs. centrality of reconstructed all primary+secondary particles
   
   TH1D			   *fHistTemp;   // temporary histogram for debugging
   TH1D			   *fHistTemp2;   // temporary histogram for debugging

   ClassDef(AliAnalysisTaskV0ChCorrelations, 1); // class for V0Ch correlation analysis
};

/*  AliV0ChBasicParticle class contains only quantities 
 *	required for the analysis in order to reduce memory consumption for event mixing.
 */
class AliV0ChBasicParticle : public AliVParticle
{
  public:
    AliV0ChBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t candidate)
      : fEta(eta), fPhi(phi), fpT(pt), fCandidate(candidate)
    {
    }
    virtual ~AliV0ChBasicParticle() {}

    // kinematics
    virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Pt() const { return fpT; }
    virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
    virtual Bool_t   PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }

    virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
    virtual Bool_t   XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }

    virtual Double_t OneOverPt()  const { AliFatal("Not implemented"); return 0; }
    virtual Double_t Phi()        const { return fPhi; }
    virtual Double_t Theta()      const { AliFatal("Not implemented"); return 0; }


    virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
    virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }

    virtual Double_t Eta()        const { return fEta; }
    virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }

    virtual Short_t Charge()      const { AliFatal("Not implemented"); return 0; }
    virtual Int_t   GetLabel()    const { AliFatal("Not implemented"); return 0; }
    // PID
    virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }
    virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }

    virtual Short_t WhichCandidate()      const { return fCandidate; }

  private:
    Float_t fEta;      // eta
    Float_t fPhi;      // phi
    Float_t fpT;       // pT
    Short_t fCandidate;   // V0 candidate: 1 - K0sig, 2 - Lamsig, 3 - Alamsig, 4 - K0bg, 5 - Lambg, 6 - Alambg

    ClassDef( AliV0ChBasicParticle, 1); // class required for event mixing
};

#endif

 AliAnalysisTaskV0ChCorrelations.h:1
 AliAnalysisTaskV0ChCorrelations.h:2
 AliAnalysisTaskV0ChCorrelations.h:3
 AliAnalysisTaskV0ChCorrelations.h:4
 AliAnalysisTaskV0ChCorrelations.h:5
 AliAnalysisTaskV0ChCorrelations.h:6
 AliAnalysisTaskV0ChCorrelations.h:7
 AliAnalysisTaskV0ChCorrelations.h:8
 AliAnalysisTaskV0ChCorrelations.h:9
 AliAnalysisTaskV0ChCorrelations.h:10
 AliAnalysisTaskV0ChCorrelations.h:11
 AliAnalysisTaskV0ChCorrelations.h:12
 AliAnalysisTaskV0ChCorrelations.h:13
 AliAnalysisTaskV0ChCorrelations.h:14
 AliAnalysisTaskV0ChCorrelations.h:15
 AliAnalysisTaskV0ChCorrelations.h:16
 AliAnalysisTaskV0ChCorrelations.h:17
 AliAnalysisTaskV0ChCorrelations.h:18
 AliAnalysisTaskV0ChCorrelations.h:19
 AliAnalysisTaskV0ChCorrelations.h:20
 AliAnalysisTaskV0ChCorrelations.h:21
 AliAnalysisTaskV0ChCorrelations.h:22
 AliAnalysisTaskV0ChCorrelations.h:23
 AliAnalysisTaskV0ChCorrelations.h:24
 AliAnalysisTaskV0ChCorrelations.h:25
 AliAnalysisTaskV0ChCorrelations.h:26
 AliAnalysisTaskV0ChCorrelations.h:27
 AliAnalysisTaskV0ChCorrelations.h:28
 AliAnalysisTaskV0ChCorrelations.h:29
 AliAnalysisTaskV0ChCorrelations.h:30
 AliAnalysisTaskV0ChCorrelations.h:31
 AliAnalysisTaskV0ChCorrelations.h:32
 AliAnalysisTaskV0ChCorrelations.h:33
 AliAnalysisTaskV0ChCorrelations.h:34
 AliAnalysisTaskV0ChCorrelations.h:35
 AliAnalysisTaskV0ChCorrelations.h:36
 AliAnalysisTaskV0ChCorrelations.h:37
 AliAnalysisTaskV0ChCorrelations.h:38
 AliAnalysisTaskV0ChCorrelations.h:39
 AliAnalysisTaskV0ChCorrelations.h:40
 AliAnalysisTaskV0ChCorrelations.h:41
 AliAnalysisTaskV0ChCorrelations.h:42
 AliAnalysisTaskV0ChCorrelations.h:43
 AliAnalysisTaskV0ChCorrelations.h:44
 AliAnalysisTaskV0ChCorrelations.h:45
 AliAnalysisTaskV0ChCorrelations.h:46
 AliAnalysisTaskV0ChCorrelations.h:47
 AliAnalysisTaskV0ChCorrelations.h:48
 AliAnalysisTaskV0ChCorrelations.h:49
 AliAnalysisTaskV0ChCorrelations.h:50
 AliAnalysisTaskV0ChCorrelations.h:51
 AliAnalysisTaskV0ChCorrelations.h:52
 AliAnalysisTaskV0ChCorrelations.h:53
 AliAnalysisTaskV0ChCorrelations.h:54
 AliAnalysisTaskV0ChCorrelations.h:55
 AliAnalysisTaskV0ChCorrelations.h:56
 AliAnalysisTaskV0ChCorrelations.h:57
 AliAnalysisTaskV0ChCorrelations.h:58
 AliAnalysisTaskV0ChCorrelations.h:59
 AliAnalysisTaskV0ChCorrelations.h:60
 AliAnalysisTaskV0ChCorrelations.h:61
 AliAnalysisTaskV0ChCorrelations.h:62
 AliAnalysisTaskV0ChCorrelations.h:63
 AliAnalysisTaskV0ChCorrelations.h:64
 AliAnalysisTaskV0ChCorrelations.h:65
 AliAnalysisTaskV0ChCorrelations.h:66
 AliAnalysisTaskV0ChCorrelations.h:67
 AliAnalysisTaskV0ChCorrelations.h:68
 AliAnalysisTaskV0ChCorrelations.h:69
 AliAnalysisTaskV0ChCorrelations.h:70
 AliAnalysisTaskV0ChCorrelations.h:71
 AliAnalysisTaskV0ChCorrelations.h:72
 AliAnalysisTaskV0ChCorrelations.h:73
 AliAnalysisTaskV0ChCorrelations.h:74
 AliAnalysisTaskV0ChCorrelations.h:75
 AliAnalysisTaskV0ChCorrelations.h:76
 AliAnalysisTaskV0ChCorrelations.h:77
 AliAnalysisTaskV0ChCorrelations.h:78
 AliAnalysisTaskV0ChCorrelations.h:79
 AliAnalysisTaskV0ChCorrelations.h:80
 AliAnalysisTaskV0ChCorrelations.h:81
 AliAnalysisTaskV0ChCorrelations.h:82
 AliAnalysisTaskV0ChCorrelations.h:83
 AliAnalysisTaskV0ChCorrelations.h:84
 AliAnalysisTaskV0ChCorrelations.h:85
 AliAnalysisTaskV0ChCorrelations.h:86
 AliAnalysisTaskV0ChCorrelations.h:87
 AliAnalysisTaskV0ChCorrelations.h:88
 AliAnalysisTaskV0ChCorrelations.h:89
 AliAnalysisTaskV0ChCorrelations.h:90
 AliAnalysisTaskV0ChCorrelations.h:91
 AliAnalysisTaskV0ChCorrelations.h:92
 AliAnalysisTaskV0ChCorrelations.h:93
 AliAnalysisTaskV0ChCorrelations.h:94
 AliAnalysisTaskV0ChCorrelations.h:95
 AliAnalysisTaskV0ChCorrelations.h:96
 AliAnalysisTaskV0ChCorrelations.h:97
 AliAnalysisTaskV0ChCorrelations.h:98
 AliAnalysisTaskV0ChCorrelations.h:99
 AliAnalysisTaskV0ChCorrelations.h:100
 AliAnalysisTaskV0ChCorrelations.h:101
 AliAnalysisTaskV0ChCorrelations.h:102
 AliAnalysisTaskV0ChCorrelations.h:103
 AliAnalysisTaskV0ChCorrelations.h:104
 AliAnalysisTaskV0ChCorrelations.h:105
 AliAnalysisTaskV0ChCorrelations.h:106
 AliAnalysisTaskV0ChCorrelations.h:107
 AliAnalysisTaskV0ChCorrelations.h:108
 AliAnalysisTaskV0ChCorrelations.h:109
 AliAnalysisTaskV0ChCorrelations.h:110
 AliAnalysisTaskV0ChCorrelations.h:111
 AliAnalysisTaskV0ChCorrelations.h:112
 AliAnalysisTaskV0ChCorrelations.h:113
 AliAnalysisTaskV0ChCorrelations.h:114
 AliAnalysisTaskV0ChCorrelations.h:115
 AliAnalysisTaskV0ChCorrelations.h:116
 AliAnalysisTaskV0ChCorrelations.h:117
 AliAnalysisTaskV0ChCorrelations.h:118
 AliAnalysisTaskV0ChCorrelations.h:119
 AliAnalysisTaskV0ChCorrelations.h:120
 AliAnalysisTaskV0ChCorrelations.h:121
 AliAnalysisTaskV0ChCorrelations.h:122
 AliAnalysisTaskV0ChCorrelations.h:123
 AliAnalysisTaskV0ChCorrelations.h:124
 AliAnalysisTaskV0ChCorrelations.h:125
 AliAnalysisTaskV0ChCorrelations.h:126
 AliAnalysisTaskV0ChCorrelations.h:127
 AliAnalysisTaskV0ChCorrelations.h:128
 AliAnalysisTaskV0ChCorrelations.h:129
 AliAnalysisTaskV0ChCorrelations.h:130
 AliAnalysisTaskV0ChCorrelations.h:131
 AliAnalysisTaskV0ChCorrelations.h:132
 AliAnalysisTaskV0ChCorrelations.h:133
 AliAnalysisTaskV0ChCorrelations.h:134
 AliAnalysisTaskV0ChCorrelations.h:135
 AliAnalysisTaskV0ChCorrelations.h:136
 AliAnalysisTaskV0ChCorrelations.h:137
 AliAnalysisTaskV0ChCorrelations.h:138
 AliAnalysisTaskV0ChCorrelations.h:139
 AliAnalysisTaskV0ChCorrelations.h:140
 AliAnalysisTaskV0ChCorrelations.h:141
 AliAnalysisTaskV0ChCorrelations.h:142
 AliAnalysisTaskV0ChCorrelations.h:143
 AliAnalysisTaskV0ChCorrelations.h:144
 AliAnalysisTaskV0ChCorrelations.h:145
 AliAnalysisTaskV0ChCorrelations.h:146
 AliAnalysisTaskV0ChCorrelations.h:147
 AliAnalysisTaskV0ChCorrelations.h:148
 AliAnalysisTaskV0ChCorrelations.h:149
 AliAnalysisTaskV0ChCorrelations.h:150
 AliAnalysisTaskV0ChCorrelations.h:151