ROOT logo
#ifndef ALIAODHMPIDRINGS_H
#define ALIAODHMPIDRINGS_H


//
// Class to handle the AOD tracks with good HMPID rings 
// Author: Levente Molnar
// levente.molnar@cern.ch , March 2012
// 



//___ROOT includes
#include <TMath.h>
//___AliRoot includes
#include "AliPID.h"


class AliAODHMPIDrings : public TObject {
  
 public:
  
  AliAODHMPIDrings();
  AliAODHMPIDrings(
                    Int_t trkId,
                    Int_t qn, 
                    Int_t cluIdx,
                    Double_t  trkTheta,
                    Double_t trkPhi,
                    Double_t signal,
                    Double_t occ,
                    Double_t chi2,
                    Double_t trkX,
                    Double_t trkY,
                    Double_t mipX,
                    Double_t mipY,
                    Double_t *pid,
                    Double_t *p                  );      //              
      
      
  AliAODHMPIDrings(const AliAODHMPIDrings& hmpidAOD);//
  AliAODHMPIDrings &operator=(const AliAODHMPIDrings& hmpidAOD);//
  virtual ~AliAODHMPIDrings() {};
    
  //___ Getters
  Int_t GetHmpTrkID()                const { return fHmpidAODtrkId; }
  
  Double32_t GetHmpMipCharge()            const { return fHmpidAODqn%1000000; }
  Double32_t GetHmpNumOfPhotonClusters()  const { return fHmpidAODqn/1000000;}
 
  Int_t      GetHmpChamber()              const { return fHmpidAODcluIdx/1000000; }
  
  Int_t      GetHmpCluIdx()               const { return fHmpidAODcluIdx; }
  
  Double_t GetHmpTrackTheta()           const { return fHmpidAODtrkTheta;}
  Double_t GetHmpTrackPhi()             const { return fHmpidAODtrkPhi;}
  
  Double_t GetHmpSignal()               const { return fHmpidAODsignal;}
  Double_t GetHmpOccupancy()            const { return fHmpidAODocc;}
  
  Double_t GetHmpChi2()                 const { return fHmpidAODchi2;}

  Double_t GetHmpTrackX()               const { return fHmpidAODtrkX;}
  Double_t GetHmpTrackY()               const { return fHmpidAODtrkY;}

  Double_t GetHmpMipX()                 const { return fHmpidAODmipX;}
  Double_t GetHmpMipY()                 const { return fHmpidAODmipY;}

  Double_t GetHmpDX()                   const { return fHmpidAODmipX - fHmpidAODtrkX;}
  Double_t GetHmpDY()                   const { return fHmpidAODmipY - fHmpidAODtrkY;}
  Double_t GetHmpDist()                 const { return TMath::Sqrt((fHmpidAODmipX - fHmpidAODtrkX)*(fHmpidAODmipX - fHmpidAODtrkX) + (fHmpidAODmipY - fHmpidAODtrkY)*(fHmpidAODmipY - fHmpidAODtrkY));}
  
  
  void GetHmpPidProbs(Double32_t *pid) const;   //defined in cxx
  void GetHmpMom(Double32_t *mom)      const;   //defined in cxx
  
  //___ Setters
  
  void SetHmpMipCharge(Int_t q)               { fHmpidAODqn = q; }
  void SetHmpCluIdx(Int_t ch,Int_t idx)       { fHmpidAODcluIdx=ch*1000000+idx;}
  
  void SetHmpNumOfPhotonClusters(Int_t nph)   { fHmpidAODqn = 1000000 * nph;}
  
  void SetHmpTrackTheta(Double_t trkTheta)  { fHmpidAODtrkTheta = trkTheta;}
  void SetHmpTrackPhi(Double_t trkPhi)      { fHmpidAODtrkPhi = trkPhi;}
  
  void SetHmpSignal(Double_t thetaC)        { fHmpidAODsignal = thetaC;}
  void SetHmpOccupancy(Double_t occ)        { fHmpidAODocc =  occ;}
  
  void SetHmpChi2(Double_t chi2)            { fHmpidAODchi2 = chi2;}

  void SetHmpTrackX(Double_t trkX)          { fHmpidAODtrkX = trkX;}
  void SetHmpTrackY(Double_t trkY)          { fHmpidAODtrkY = trkY;}

  void SetHmpMipX(Double_t mipX)            { fHmpidAODmipX = mipX;}
  void SetHmpMipY(Double_t mipY)            { fHmpidAODmipY = mipY;}
 
  void SetHmpPidProbs(Double_t *pid);       
  void SetHmpMom(Double_t *mom);        
  
  
  
 protected:
  
  Int_t       fHmpidAODtrkId;                      // Unique track id as in ESD
  Int_t       fHmpidAODqn;                         // 1000000*number of photon clusters + QDC
  Int_t       fHmpidAODcluIdx;                     // 1000000*chamber id + cluster idx of the assigned MIP cluster
  
  Double32_t  fHmpidAODtrkTheta;                   // [-2*pi,2*pi,16] theta of the track extrapolated to the HMPID, LORS
  Double32_t  fHmpidAODtrkPhi;                     // [-2*pi,2*pi,16] theta of the track extrapolated to the HMPID, LORS
  Double32_t  fHmpidAODsignal;                     // HMPID signal (Theta ckov, rad)
  Double32_t  fHmpidAODocc;                        // chamber occupancy where the track passed through: number of pads
  Double32_t  fHmpidAODchi2;                       // [0.,0.,8] chi2 in the HMPID  
  Double32_t  fHmpidAODtrkX;                       // x of the track impact, LORS 
  Double32_t  fHmpidAODtrkY;                       // y of the track impact, LORS 
  Double32_t  fHmpidAODmipX;                       // x of the MIP in LORS
  Double32_t  fHmpidAODmipY;                       // y of the MIP in LORS
  Double32_t  fHmpidAODpid[AliPID::kSPECIES];      // [0.,0.,8] "detector response probabilities" (for the PID)
  Double32_t  fHMPIDmom[3];                        // track momentum at the HMPID ring reconstruction
  
  ClassDef(AliAODHMPIDrings,2)  
        
};
#endif
 AliAODHMPIDrings.h:1
 AliAODHMPIDrings.h:2
 AliAODHMPIDrings.h:3
 AliAODHMPIDrings.h:4
 AliAODHMPIDrings.h:5
 AliAODHMPIDrings.h:6
 AliAODHMPIDrings.h:7
 AliAODHMPIDrings.h:8
 AliAODHMPIDrings.h:9
 AliAODHMPIDrings.h:10
 AliAODHMPIDrings.h:11
 AliAODHMPIDrings.h:12
 AliAODHMPIDrings.h:13
 AliAODHMPIDrings.h:14
 AliAODHMPIDrings.h:15
 AliAODHMPIDrings.h:16
 AliAODHMPIDrings.h:17
 AliAODHMPIDrings.h:18
 AliAODHMPIDrings.h:19
 AliAODHMPIDrings.h:20
 AliAODHMPIDrings.h:21
 AliAODHMPIDrings.h:22
 AliAODHMPIDrings.h:23
 AliAODHMPIDrings.h:24
 AliAODHMPIDrings.h:25
 AliAODHMPIDrings.h:26
 AliAODHMPIDrings.h:27
 AliAODHMPIDrings.h:28
 AliAODHMPIDrings.h:29
 AliAODHMPIDrings.h:30
 AliAODHMPIDrings.h:31
 AliAODHMPIDrings.h:32
 AliAODHMPIDrings.h:33
 AliAODHMPIDrings.h:34
 AliAODHMPIDrings.h:35
 AliAODHMPIDrings.h:36
 AliAODHMPIDrings.h:37
 AliAODHMPIDrings.h:38
 AliAODHMPIDrings.h:39
 AliAODHMPIDrings.h:40
 AliAODHMPIDrings.h:41
 AliAODHMPIDrings.h:42
 AliAODHMPIDrings.h:43
 AliAODHMPIDrings.h:44
 AliAODHMPIDrings.h:45
 AliAODHMPIDrings.h:46
 AliAODHMPIDrings.h:47
 AliAODHMPIDrings.h:48
 AliAODHMPIDrings.h:49
 AliAODHMPIDrings.h:50
 AliAODHMPIDrings.h:51
 AliAODHMPIDrings.h:52
 AliAODHMPIDrings.h:53
 AliAODHMPIDrings.h:54
 AliAODHMPIDrings.h:55
 AliAODHMPIDrings.h:56
 AliAODHMPIDrings.h:57
 AliAODHMPIDrings.h:58
 AliAODHMPIDrings.h:59
 AliAODHMPIDrings.h:60
 AliAODHMPIDrings.h:61
 AliAODHMPIDrings.h:62
 AliAODHMPIDrings.h:63
 AliAODHMPIDrings.h:64
 AliAODHMPIDrings.h:65
 AliAODHMPIDrings.h:66
 AliAODHMPIDrings.h:67
 AliAODHMPIDrings.h:68
 AliAODHMPIDrings.h:69
 AliAODHMPIDrings.h:70
 AliAODHMPIDrings.h:71
 AliAODHMPIDrings.h:72
 AliAODHMPIDrings.h:73
 AliAODHMPIDrings.h:74
 AliAODHMPIDrings.h:75
 AliAODHMPIDrings.h:76
 AliAODHMPIDrings.h:77
 AliAODHMPIDrings.h:78
 AliAODHMPIDrings.h:79
 AliAODHMPIDrings.h:80
 AliAODHMPIDrings.h:81
 AliAODHMPIDrings.h:82
 AliAODHMPIDrings.h:83
 AliAODHMPIDrings.h:84
 AliAODHMPIDrings.h:85
 AliAODHMPIDrings.h:86
 AliAODHMPIDrings.h:87
 AliAODHMPIDrings.h:88
 AliAODHMPIDrings.h:89
 AliAODHMPIDrings.h:90
 AliAODHMPIDrings.h:91
 AliAODHMPIDrings.h:92
 AliAODHMPIDrings.h:93
 AliAODHMPIDrings.h:94
 AliAODHMPIDrings.h:95
 AliAODHMPIDrings.h:96
 AliAODHMPIDrings.h:97
 AliAODHMPIDrings.h:98
 AliAODHMPIDrings.h:99
 AliAODHMPIDrings.h:100
 AliAODHMPIDrings.h:101
 AliAODHMPIDrings.h:102
 AliAODHMPIDrings.h:103
 AliAODHMPIDrings.h:104
 AliAODHMPIDrings.h:105
 AliAODHMPIDrings.h:106
 AliAODHMPIDrings.h:107
 AliAODHMPIDrings.h:108
 AliAODHMPIDrings.h:109
 AliAODHMPIDrings.h:110
 AliAODHMPIDrings.h:111
 AliAODHMPIDrings.h:112
 AliAODHMPIDrings.h:113
 AliAODHMPIDrings.h:114
 AliAODHMPIDrings.h:115
 AliAODHMPIDrings.h:116
 AliAODHMPIDrings.h:117
 AliAODHMPIDrings.h:118
 AliAODHMPIDrings.h:119
 AliAODHMPIDrings.h:120
 AliAODHMPIDrings.h:121
 AliAODHMPIDrings.h:122
 AliAODHMPIDrings.h:123
 AliAODHMPIDrings.h:124