ROOT logo
#ifndef ALIANACHARGEDPARTICLES_H
#define ALIANACHARGEDPARTICLES_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//_________________________________________________________________________
//
// Class for track selection and identification (not done now)
// Tracks from the CTS are kept in the AOD.
// Few histograms produced.
//
//-- Author: Gustavo Conesa (INFN-LNF)

// Root system
class TH2F; 

// Analysis system
#include "AliAnaCaloTrackCorrBaseClass.h"
 
class AliAnaChargedParticles : public AliAnaCaloTrackCorrBaseClass {
  
 public: 
  AliAnaChargedParticles() ;              // default ctor
  virtual ~AliAnaChargedParticles() { ; } // virtual dtor
  
  void    FillPrimaryHistograms();
  
  TList * GetCreateOutputObjects();
    
  void    Init();
  
  void    InitParameters();
  
  void    Print(const Option_t * opt) const;
  
  void    MakeAnalysisFillAOD()  ;
  
  void    MakeAnalysisFillHistograms() ;
  
  void    SwitchOnFillTrackBCHistograms()    { fFillTrackBCHistograms   = kTRUE  ; }
  void    SwitchOffFillTrackBCHistograms()   { fFillTrackBCHistograms   = kFALSE ; }

  void    SwitchOnFillVertexBC0Histograms()  { fFillVertexBC0Histograms = kTRUE  ; }
  void    SwitchOffFillVertexBC0Histograms() { fFillVertexBC0Histograms = kFALSE ; }

 private:
  
  Bool_t  fFillTrackBCHistograms;           // Fill histograms for tracks with TOF BC=0 or not related histograms
  Bool_t  fFillVertexBC0Histograms;         // Fill histograms for tracks with vertex BC=0 or not related histograms
  TLorentzVector fMomentum;                 //! Temporary momentum container
  
  //Histograms
  TH1F * fhNtracks;                         //! track multiplicity distribution
  TH1F * fhPt;                              //! pT distribution
  TH1F * fhPtNoCut;                         //! pT distribution, no cut
  TH1F * fhPtCutDCA;                        //! pT distribution, Apply DCA cut
  TH1F * fhPtCutDCABCOK;                    //! pT distribution, Apply DCA cut, BC=0 or -100

  TH1F * fhPtPileUp[7];                     //! pT distribution, pile-up defined events
  TH2F * fhPhiNeg;                          //! phi distribution vs pT, negative
  TH2F * fhEtaNeg;                          //! eta distribution vs pT, negative
  TH2F * fhPhiPos;                          //! phi distribution vs pT, positive
  TH2F * fhEtaPos;                          //! eta distribution vs pT, positive
  TH2F * fhEtaPhiPos;                       //! eta vs phi distribution of positive charge
  TH2F * fhEtaPhiNeg;                       //! eta vs phi distribution of negative charge
  
  TH1F * fhPtVtxOutBC0;                     //! pT distribution of tracks from a vertex with BC!=0
  TH2F * fhEtaPhiVtxOutBC0;                 //! eta/phi distribution of tracks from a vertex with BC!=0
  TH1F * fhPtVtxInBC0;                      //! pT distribution of tracks from a vertex with BC=0
  TH2F * fhEtaPhiVtxInBC0;                  //! eta/phi distribution of tracks from a vertex with BC=0

  TH1F * fhPtSPDRefit;                      //! pT distribution of tracks with SPD and ITS refit
  TH1F * fhPtNoSPDRefit;                    //! pT distribution of constrained tracks no SPD and with ITSRefit
  TH1F * fhPtNoSPDNoRefit;                  //! pT distribution of constrained tracks with no SPD requierement and without ITSRefit

  TH2F * fhEtaPhiSPDRefitPt02;              //! eta-phi distribution of tracks with SPD and ITS refit, 0 < pT < 2 GeV
  TH2F * fhEtaPhiNoSPDRefitPt02;            //! eta-phi distribution of constrained tracks no SPD and with ITSRefit,  0 < pT < 2 GeV
  TH2F * fhEtaPhiNoSPDNoRefitPt02;          //! eta-phi distribution of constrained tracks with no SPD requierement and without ITSRefit,  0 < pT < 2 GeV

  TH2F * fhEtaPhiSPDRefitPt3;               //! eta-phi distribution of tracks with SPD and ITS refit, pT > 3 GeV
  TH2F * fhEtaPhiNoSPDRefitPt3;             //! eta-phi distribution of constrained tracks no SPD and with ITSRefit,  pT > 3 GeV
  TH2F * fhEtaPhiNoSPDNoRefitPt3;           //! eta-phi distribution of constrained tracks with no SPD requierement and without ITSRefit,  pT > 3 GeV

  //MC
  
  enum mvType{kmcPion = 0, kmcProton = 1, kmcKaon = 2, kmcMuon = 3, kmcElectron = 4, kmcUnknown = 5 };

  TH1F * fhPtMCPart [6];                    //! pT distribution, 6 hadron ID
  TH2F * fhPhiMCPart[6];                    //! phi distribution vs pT, 6 hadron ID
  TH2F * fhEtaMCPart[6];                    //! eta distribution vs pT, 6 hadron ID
  
  TH1F * fhPtMCPrimPart [6];                //! Number of generated charged hadrons vs pT coming from MC particle, 6 hadron ID
  TH2F * fhPhiMCPrimPart[6];                //! Number of generated charged hadrons vs phi coming from MC particle, 6 hadron ID
  TH2F * fhEtaMCPrimPart[6];                //! Number of generated charged hadrons vs eta coming from MC particle, 6 hadron ID

  // TOF
  TH1F * fhTOFSignal;                       //! TOF signal
  TH1F * fhTOFSignalPtCut;                  //! TOF signal pt and acceptance cut
  TH1F * fhTOFSignalBCOK;                   //! TOF signal pt and acceptance cut
  TH2F * fhPtTOFSignal;                     //! TOF signal vs track pT, good status
  TH2F * fhPtTOFSignalDCACut;               //! TOF signal vs track pT, good status
  TH2F * fhPtTOFSignalPileUp[7];            //! TOF signal vs track pT, good status, pile-up
  TH2F * fhPtTOFSignalVtxOutBC0;            //! TOF signal vs track pT, good status
  TH2F * fhPtTOFSignalVtxOutBC0PileUp[7];   //! TOF signal vs track pT, good status, pile-up
  TH2F * fhPtTOFSignalVtxInBC0;             //! TOF signal vs track pT, good status
  TH2F * fhPtTOFSignalVtxInBC0PileUp[7];    //! TOF signal vs track pT, good status, pile-up
  TH1F * fhPtTOFStatus0;                    //! pT of tracks not passing TOF status selection
  TH2F * fhEtaPhiTOFStatus0;                //! eta/phi of tracks not passing TOF status selection
  TH2F * fhEtaPhiTOFBC0;                    //! eta/phi of tracks passing TOF status selection, tracks in BC=0
  TH2F * fhEtaPhiTOFBCPlus;                 //! eta/phi of tracks passing TOF status selection, tracks in BC>0
  TH2F * fhEtaPhiTOFBCMinus;                //! eta/phi of tracks passing TOF status selection, tracks in BC<0
  TH2F * fhEtaPhiTOFBC0PileUpSPD;           //! eta/phi of tracks passing TOF status selection, tracks in BC=0, pile-up spd
  TH2F * fhEtaPhiTOFBCPlusPileUpSPD;        //! eta/phi of tracks passing TOF status selection, tracks in BC>0, pile-up spd
  TH2F * fhEtaPhiTOFBCMinusPileUpSPD;       //! eta/phi of tracks passing TOF status selection, tracks in BC<0, pile-up spd
  
  TH1F * fhProductionVertexBC;              //!  check BC of production vertex
  TH1F * fhProductionVertexBCPileUp[7];     //!  check BC of production vertex, pile-up

  TH2F * fhPtDCA[3];                        //! DCA (xy,z,constrained) of all tracks
  
  TH2F * fhPtDCASPDRefit[3];                //! DCA (xy,z,constrained) of tracks with SPD and ITS refit
  TH2F * fhPtDCANoSPDRefit[3];              //! DCA (xy,z,constrained) of constrained tracks no SPD and with ITSRefit
  TH2F * fhPtDCANoSPDNoRefit[3];            //! DCA (xy,z,constrained) of constrained tracks with no SPD requierement and without ITSRefit

  TH2F * fhPtDCAVtxOutBC0[3];               //! DCA (xy,z,constrained) of all tracks, vertex BC!=0
  TH2F * fhPtDCAVtxInBC0[3];                //! DCA (xy,z,constrained) of all tracks, vertex BC==0
  TH2F * fhPtDCAPileUp[3];                  //! DCA (xy,z,constrained) of all tracks, SPD pile-up
  TH2F * fhPtDCAVtxOutBC0PileUp[3];         //! DCA (xy,z,constrained) of all tracks, vertex BC!=0, SPD pile-up
  TH2F * fhPtDCAVtxInBC0PileUp[3];          //! DCA (xy,z,constrained) of all tracks, vertex BC==0, SPD pile-up

  TH2F * fhPtDCATOFBC0[3];                  //! DCA (xy,z,constrained) of all tracks, hit in TOF and BC=0
  TH2F * fhPtDCAPileUpTOFBC0[3];            //! DCA (xy,z,constrained) of all tracks, hit in TOF and BC=0
  TH2F * fhPtDCATOFBCOut[3];                //! DCA (xy,z,constrained) of all tracks, hit in TOF and BC!=0

  TH2F * fhPtDCANoTOFHit[3];                //! DCA (xy,z,constrained) of all tracks, no hit in TOF
  TH2F * fhPtDCAVtxOutBC0NoTOFHit[3];       //! DCA (xy,z,constrained) of all tracks, vertex BC!=0, no hit in TOF
  TH2F * fhPtDCAVtxInBC0NoTOFHit[3];        //! DCA (xy,z,constrained) of all tracks, vertex BC=0, no hit in TOF
  TH2F * fhPtDCAPileUpNoTOFHit[3];          //! DCA (xy,z,constrained) of all tracks, SPD pile-up, no hit in TOF
  TH2F * fhPtDCAVtxOutBC0PileUpNoTOFHit[3]; //! DCA (xy,z,constrained) of all tracks, vertex BC!=0, SPD pile-up, no hit in TOF
  TH2F * fhPtDCAVtxInBC0PileUpNoTOFHit[3];  //! DCA (xy,z,constrained) of all tracks, vertex BC=0, SPD pile-up, no hit in TOF
  
  TH2F * fhPtNPileUpSPDVtx;	                //! cluster pt vs number of spd pile-up vertices
  TH2F * fhPtNPileUpTrkVtx;                 //! cluster pt vs number of track pile-up vertices
  TH2F * fhPtNPileUpSPDVtxBC0;	            //! cluster pt vs number of spd pile-up vertices, track in BC=0
  TH2F * fhPtNPileUpTrkVtxBC0;              //! cluster pt vs number of track pile-up vertices, track in BC=0

  AliAnaChargedParticles(              const AliAnaChargedParticles & ch) ; // cpy ctor
  AliAnaChargedParticles & operator = (const AliAnaChargedParticles & ch) ; // cpy assignment
  
  ClassDef(AliAnaChargedParticles,10)

} ;


#endif //ALIANACHARGEDPARTICLES_H



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