ROOT logo
#ifndef AliStaObjects_H
#define AliStaObjects_H

// $Id$

#include <TLorentzVector.h>

class AliStaHeader
{
 public:
  AliStaHeader() : fRun(0), fOrbit(0), fPeriod(0), fBx(0), fL0(0), fL1(0), fL2(0),
                   fTrClassMask(0), fTrCluster(0), fOffTriggers(0), fFiredTriggers(),
                   fTcls(0), fV0And(0), fIsHT(0), fIsPileup(0), fIsPileup2(0), fIsPileup4(0), fIsPileup8(0), 
                   fNSpdVertices(0), fNTpcVertices(0), fV0Cent(0), fV0(0), fCl1Cent(0), fCl1(0), fTrCent(0), 
                   fTr(0), fCqual(-1), fPsi(0), fPsiRes(0), fNSelTr(0), fNSelPrimTr(0), fNSelPrimTr1(0),
                   fNSelPrimTr2(0), fNCells(0), fNCells0(0), fNCells01(0), fNCells03(0), 
                   fNCells1(0), fNCells2(0), fNCells5(0), fNClus(0), fNClus1(0), fNClus2(0), fNClus5(0), 
                   fMaxCellE(0), fMaxClusE(0), fMaxTrE(0), fNcSM0(0), fNcSM1(0), fNcSM2(0), fNcSM3(0), 
                   fNcSM4(0), fNcSM5(0), fNcSM6(0),fNcSM7(0),fNcSM8(0),fNcSM9(0) {;}
  virtual ~AliStaHeader() {;}

  ULong64_t     GetEventId() const {
                  return (((ULong64_t)fPeriod << 36) |
                          ((ULong64_t)fOrbit  << 12) |
                          (ULong64_t)fBx); 
                }

 public:
  Int_t         fRun;            //         run number
  UInt_t        fOrbit;          //         orbit number
  UInt_t        fPeriod;         //         period number
  UShort_t      fBx;             //         bunch crossing id
  UInt_t        fL0;             //         l0 trigger bits
  UInt_t        fL1;             //         l1 trigger bits
  UShort_t      fL2;             //         l2 trigger bits
  ULong64_t     fTrClassMask;    //         trigger class mask
  UChar_t       fTrCluster;      //         trigger cluster mask
  UInt_t        fOffTriggers;    //         fired offline triggers for this event
  TString       fFiredTriggers;  //         string with fired triggers
  UInt_t        fTcls;           //         custom trigger definition
  Bool_t        fV0And;          //         if V0AND (from AliTriggerAnalysis)
  Bool_t        fIsHT;           //         if EMCAL L0 (from AliTriggerAnalysis)
  Bool_t        fIsPileup;       //         indicate pileup from IsPileupFromSPD with 0.8 minzdist
  Bool_t        fIsPileup2;      //         indicate pileup from IsPileupFromSPD with 0.4 minzdist
  Bool_t        fIsPileup4;      //         indicate pileup from IsPileupFromSPD with 0.2 minzdist
  Bool_t        fIsPileup8;      //         indicate pileup from IsPileupFromSPD with 0.1 minzdist
  UShort_t      fNSpdVertices;   //         number of pileup vertices (spd)
  UShort_t      fNTpcVertices;   //         number of pileup vertices (tpc)
  Double32_t    fV0Cent;         //[0,0,16] v0 cent
  Double32_t    fV0;             //[0,0,16] v0 result used for cent 
  Double32_t    fCl1Cent;        //[0,0,16] cl1 cent
  Double32_t    fCl1;            //[0,0,16] cl1 result used for cent 
  Double32_t    fTrCent;         //[0,0,16] tr cent
  Double32_t    fTr;             //[0,0,16] tr result used for cent 
  Int_t         fCqual;          //         centrality quality
  Double32_t    fPsi;            //[0,0,16] event-plane angle
  Double32_t    fPsiRes;         //[0,0,16] event-plane ange resolution
  UShort_t      fNSelTr;         //         # selected tracks         
  UShort_t      fNSelPrimTr;     //         # selected tracks (primary)
  UShort_t      fNSelPrimTr1;    //         # selected tracks (primary) pt > 1 GeV/c
  UShort_t      fNSelPrimTr2;    //         # selected tracks (primary) pt > 2 GeV/c
  UShort_t      fNCells;         //         # cells
  UShort_t      fNCells0;        //         # cells > 0.45 GeV
  UShort_t      fNCells01;       //         # cells > 0.1  GeV
  UShort_t      fNCells03;       //         # cells > 0.3  GeV
  UShort_t      fNCells1;        //         # cells > 1    GeV
  UShort_t      fNCells2;        //         # cells > 2    GeV
  UShort_t      fNCells5;        //         # cells > 5    GeV
  UShort_t      fNClus;          //         # clus
  UShort_t      fNClus1;         //         # clus > 1 GeV
  UShort_t      fNClus2;         //         # clus > 2 GeV
  UShort_t      fNClus5;         //         # clus > 5 GeV
  Double32_t    fMaxCellE;       //[0,0,16] maximum cell energy
  Double32_t    fMaxClusE;       //[0,0,16] maximum clus energy
  Double32_t    fMaxTrE;         //[0,0,16] maximum trigger energy
  UShort_t      fNcSM0;          //         # cells > 0.1  GeV in SM 0
  UShort_t      fNcSM1;          //         # cells > 0.1  GeV in SM 1
  UShort_t      fNcSM2;          //         # cells > 0.1  GeV in SM 2
  UShort_t      fNcSM3;          //         # cells > 0.1  GeV in SM 3
  UShort_t      fNcSM4;          //         # cells > 0.1  GeV in SM 4
  UShort_t      fNcSM5;          //         # cells > 0.1  GeV in SM 5
  UShort_t      fNcSM6;          //         # cells > 0.1  GeV in SM 6
  UShort_t      fNcSM7;          //         # cells > 0.1  GeV in SM 7
  UShort_t      fNcSM8;          //         # cells > 0.1  GeV in SM 8
  UShort_t      fNcSM9;          //         # cells > 0.1  GeV in SM 9

  ClassDef(AliStaHeader,6) // Header class
};

class AliStaVertex
{
 public:
  AliStaVertex(Double_t x=0, Double_t y=0, Double_t z=0) : fVx(x), fVy(y), fVz(z), fVc(-1), fDisp(0), fZres(0),
                                                           fChi2(0), fSt(0), fIs3D(0), fIsZ(0) {;}
  virtual ~AliStaVertex() {;}

 public:
  Double_t      fVx;          //[0,0,16] vertex x
  Double_t      fVy;          //[0,0,16] vertex y
  Double_t      fVz;          //[0,0,16] vertex z
  Double_t      fVc;          //[0,0,16] number of contributors to vertex
  Double_t      fDisp;        //[0,0,16] dispersion
  Double_t      fZres;        //[0,0,16] z-resolution
  Double_t      fChi2;        //[0,0,16] chi2 of fit
  Bool_t        fSt;          //         status bit
  Bool_t        fIs3D;        //         is vertex from 3D
  Bool_t        fIsZ;         //         is vertex from Z only

  ClassDef(AliStaVertex,1) // Vertex class
};

class AliStaCluster : public TObject
{
 public:
  AliStaCluster() : TObject(), 
                    fE(0), fR(0), fEta(0), fPhi(0), fN(0), fN1(0), fN3(0), fIdMax(-1), fSM(-1), fEmax(0), fE2max(0), fEcross(0),
                    fTmax(0), fDbc(-1), fDisp(-1), fM20(-1), fM02(-1), fEcc(-1), fSig(-1), fSigEtaEta(-1), fSigPhiPhi(-1),
                    fIsTrackM(0), fTrDz(0), fTrDr(-1), fTrEp(0), fTrDedx(0), fTrIso(0), fTrIso1(0), fTrIso2(0),  
                    fTrIsoD1(0), fTrIso1D1(0), fTrIso2D1(0), fTrIsoD3(0), fTrIso1D3(0), fTrIso2D3(0),
                    fTrIsoD4(0), fTrIso1D4(0), fTrIso2D4(0), fTrIsoStrip(0), fCeIso(0), fCeIso1(0), 
                    fCeIso3(0), fCeIso4(0), fCeIso3x3(0), fCeIso4x4(0), fCeIso5x5(0), fCeCore(0), fCeIso3x22(0), 
                    fIsShared(0), fTrigId(-1), fTrigE(0), fMcLabel(-1), fEmbE(0) {;}

  void          GetMom(TLorentzVector& p, Double_t *vertex=0);
  void          GetMom(TLorentzVector& p, AliStaVertex *vertex);

 public:
  Double32_t    fE;                //[0,0,16] energy
  Double32_t    fR;                //[0,0,16] radius (cylinder)
  Double32_t    fEta;              //[0,0,16] eta
  Double32_t    fPhi;              //[0,0,16] phi
  UChar_t       fN;                //         number of cells
  UChar_t       fN1;               //         number of cells > 100 MeV
  UChar_t       fN3;               //         number of cells > 300 MeV
  Short_t       fIdMax;            //         id maximum cell
  Char_t        fSM;               //         super module number (from maximum cell)
  Double32_t    fEmax;             //[0,0,16] energy of maximum cell
  Double32_t    fE2max;            //[0,0,16] energy of second maximum cell
  Double32_t    fEcross;           //[0,0,16] energy of the 4 adjacent cells around the seed
  Double32_t    fTmax;             //[0,0,16] time of maximum cell
  Double32_t    fDbc;              //[0,0,16] distance to nearest bad channel
  Double32_t    fDisp;             //[0,0,16] cluster dispersion, for shape analysis
  Double32_t    fM20;              //[0,0,16] 2-nd moment along the main eigen axis
  Double32_t    fM02;              //[0,0,16] 2-nd moment along the second eigen axis
  Double32_t    fEcc;              //[0,0,16] eccentricity
  Double32_t    fSig;              //[0,0,16] sigma
  Double32_t    fSigEtaEta;        //[0,0,16] sigma eta-eta
  Double32_t    fSigPhiPhi;        //[0,0,16] sigma phi-phi
  Bool_t        fIsTrackM;         //         if true then track values are set
  Double32_t    fTrDz;             //[0,0,16] dZ to nearest track
  Double32_t    fTrDr;             //[0,0,16] dR to nearest track (in x,y)
  Double32_t    fTrEp;             //[0,0,16] E/P to nearest track 
  Double32_t    fTrDedx;           //[0,0,16] dE/dx (TPC signal) to nearest track 
  Double32_t    fTrIso;            //[0,0,16] track isolation
  Double32_t    fTrIso1;           //[0,0,16] track isolation (pt>1GeV/c)
  Double32_t    fTrIso2;           //[0,0,16] track isolation (pt>2GeV/c)
  Double32_t    fTrIsoD1;          //[0,0,16] track isolation, iso dist 0.25
  Double32_t    fTrIso1D1;         //[0,0,16] track isolation (pt>1GeV/c), iso dist 0.1
  Double32_t    fTrIso2D1;         //[0,0,16] track isolation (pt>2GeV/c), iso dist 0.1
  Double32_t    fTrIsoD3;          //[0,0,16] track isolation, iso dist 0.3
  Double32_t    fTrIso1D3;         //[0,0,16] track isolation (pt>1GeV/c), iso dist 0.3
  Double32_t    fTrIso2D3;         //[0,0,16] track isolation (pt>2GeV/c), iso dist 0.3
  Double32_t    fTrIsoD4;          //[0,0,16] track isolation, iso dist 0.4
  Double32_t    fTrIso1D4;         //[0,0,16] track isolation (pt>1GeV/c), iso dist 0.4
  Double32_t    fTrIso2D4;         //[0,0,16] track isolation (pt>2GeV/c), iso dist 0.4
  Double32_t    fTrIsoStrip;       //[0,0,16] track isolation strip, dEtaXdPhi=0.015x0.3
  Double32_t    fCeIso;            //[0,0,16] cell isolation in R=0.20
  Double32_t    fCeIso1;           //[0,0,16] cell isolation in R=0.10
  Double32_t    fCeIso3;           //[0,0,16] cell isolation in R=0.30
  Double32_t    fCeIso4;           //[0,0,16] cell isolation in R=0.40
  Double32_t    fCeIso3x3;         //[0,0,16] cell isolation in 3x3 cells
  Double32_t    fCeIso4x4;         //[0,0,16] cell isolation in 4x4 cells
  Double32_t    fCeIso5x5;         //[0,0,16] cell isolation in 5x5 cells
  Double32_t    fCeCore;           //[0,0,16] cell content in R=0.05 
  Double32_t    fCeIso3x22;        //[0,0,16] cell isolation in rectangular strip of dEtaXdPhi=0.042x0.308
  Bool_t        fIsShared;         //         =true then extends across more than one super module
  Short_t       fTrigId;           //         index of matched trigger tower
  Double32_t    fTrigE;            //[0,0,16] energy (FEE) of matched trigger tower
  Short_t       fMcLabel;          //         index of closest MC particle
  Double32_t    fEmbE;             //[0,0,16] sum of energy of embedded (MC) cells in cluster

  ClassDef(AliStaCluster,10) // Cluster class
};

class AliStaTrigger : public TObject
{
 public:
  AliStaTrigger() : TObject(), fE(0), fEta(0), fPhi(0), fIdMax(-1) {}

 public:
  Double32_t    fE;                //[0,0,16] energy
  Double32_t    fEta;              //[0,0,16] eta
  Double32_t    fPhi;              //[0,0,16] phi
  Short_t       fIdMax;            //         id maximum cell

  ClassDef(AliStaTrigger,2) // Trigger class
};

class AliStaPart : public TObject
{
 public:
  AliStaPart() : TObject(), fPt(0), fEta(0), fPhi(0), fVR(0), fVEta(0), fVPhi(0), fPid(0), fMo(-1), fDet(-2), 
                 fLab(-1), fNs(0) { memset(fDs,-1,sizeof(Short_t)*99); }

  Int_t         OnEmcal() const { return (fDet==8);  }
  Int_t         IsSim()   const { return (fDet!=-2); }
    
 public:
  Double32_t    fPt;               //[0,0,16] pt
  Double32_t    fEta;              //[0,0,16] eta
  Double32_t    fPhi;              //[0,0,16] phi
  Double32_t    fVR;               //[0,0,16] prod r (cylinder)
  Double32_t    fVEta;             //[0,0,16] prod eta
  Double32_t    fVPhi;             //[0,0,16] prod phi
  Short_t       fPid;              //         pid
  Short_t       fMo;               //         index of mother
  Short_t       fDet;              //         detector in which particle left trace (8 for EMCAL, see AliTrackReference.h)
    // the following must be filled before first usage
  Short_t       fLab;              //!        label (index in array)
  Short_t       fNs;               //!        number of daughters
  Short_t       fDs[99];           //!        daughters

  ClassDef(AliStaPart,1) // Particle class
};
#endif
 AliStaObjects.h:1
 AliStaObjects.h:2
 AliStaObjects.h:3
 AliStaObjects.h:4
 AliStaObjects.h:5
 AliStaObjects.h:6
 AliStaObjects.h:7
 AliStaObjects.h:8
 AliStaObjects.h:9
 AliStaObjects.h:10
 AliStaObjects.h:11
 AliStaObjects.h:12
 AliStaObjects.h:13
 AliStaObjects.h:14
 AliStaObjects.h:15
 AliStaObjects.h:16
 AliStaObjects.h:17
 AliStaObjects.h:18
 AliStaObjects.h:19
 AliStaObjects.h:20
 AliStaObjects.h:21
 AliStaObjects.h:22
 AliStaObjects.h:23
 AliStaObjects.h:24
 AliStaObjects.h:25
 AliStaObjects.h:26
 AliStaObjects.h:27
 AliStaObjects.h:28
 AliStaObjects.h:29
 AliStaObjects.h:30
 AliStaObjects.h:31
 AliStaObjects.h:32
 AliStaObjects.h:33
 AliStaObjects.h:34
 AliStaObjects.h:35
 AliStaObjects.h:36
 AliStaObjects.h:37
 AliStaObjects.h:38
 AliStaObjects.h:39
 AliStaObjects.h:40
 AliStaObjects.h:41
 AliStaObjects.h:42
 AliStaObjects.h:43
 AliStaObjects.h:44
 AliStaObjects.h:45
 AliStaObjects.h:46
 AliStaObjects.h:47
 AliStaObjects.h:48
 AliStaObjects.h:49
 AliStaObjects.h:50
 AliStaObjects.h:51
 AliStaObjects.h:52
 AliStaObjects.h:53
 AliStaObjects.h:54
 AliStaObjects.h:55
 AliStaObjects.h:56
 AliStaObjects.h:57
 AliStaObjects.h:58
 AliStaObjects.h:59
 AliStaObjects.h:60
 AliStaObjects.h:61
 AliStaObjects.h:62
 AliStaObjects.h:63
 AliStaObjects.h:64
 AliStaObjects.h:65
 AliStaObjects.h:66
 AliStaObjects.h:67
 AliStaObjects.h:68
 AliStaObjects.h:69
 AliStaObjects.h:70
 AliStaObjects.h:71
 AliStaObjects.h:72
 AliStaObjects.h:73
 AliStaObjects.h:74
 AliStaObjects.h:75
 AliStaObjects.h:76
 AliStaObjects.h:77
 AliStaObjects.h:78
 AliStaObjects.h:79
 AliStaObjects.h:80
 AliStaObjects.h:81
 AliStaObjects.h:82
 AliStaObjects.h:83
 AliStaObjects.h:84
 AliStaObjects.h:85
 AliStaObjects.h:86
 AliStaObjects.h:87
 AliStaObjects.h:88
 AliStaObjects.h:89
 AliStaObjects.h:90
 AliStaObjects.h:91
 AliStaObjects.h:92
 AliStaObjects.h:93
 AliStaObjects.h:94
 AliStaObjects.h:95
 AliStaObjects.h:96
 AliStaObjects.h:97
 AliStaObjects.h:98
 AliStaObjects.h:99
 AliStaObjects.h:100
 AliStaObjects.h:101
 AliStaObjects.h:102
 AliStaObjects.h:103
 AliStaObjects.h:104
 AliStaObjects.h:105
 AliStaObjects.h:106
 AliStaObjects.h:107
 AliStaObjects.h:108
 AliStaObjects.h:109
 AliStaObjects.h:110
 AliStaObjects.h:111
 AliStaObjects.h:112
 AliStaObjects.h:113
 AliStaObjects.h:114
 AliStaObjects.h:115
 AliStaObjects.h:116
 AliStaObjects.h:117
 AliStaObjects.h:118
 AliStaObjects.h:119
 AliStaObjects.h:120
 AliStaObjects.h:121
 AliStaObjects.h:122
 AliStaObjects.h:123
 AliStaObjects.h:124
 AliStaObjects.h:125
 AliStaObjects.h:126
 AliStaObjects.h:127
 AliStaObjects.h:128
 AliStaObjects.h:129
 AliStaObjects.h:130
 AliStaObjects.h:131
 AliStaObjects.h:132
 AliStaObjects.h:133
 AliStaObjects.h:134
 AliStaObjects.h:135
 AliStaObjects.h:136
 AliStaObjects.h:137
 AliStaObjects.h:138
 AliStaObjects.h:139
 AliStaObjects.h:140
 AliStaObjects.h:141
 AliStaObjects.h:142
 AliStaObjects.h:143
 AliStaObjects.h:144
 AliStaObjects.h:145
 AliStaObjects.h:146
 AliStaObjects.h:147
 AliStaObjects.h:148
 AliStaObjects.h:149
 AliStaObjects.h:150
 AliStaObjects.h:151
 AliStaObjects.h:152
 AliStaObjects.h:153
 AliStaObjects.h:154
 AliStaObjects.h:155
 AliStaObjects.h:156
 AliStaObjects.h:157
 AliStaObjects.h:158
 AliStaObjects.h:159
 AliStaObjects.h:160
 AliStaObjects.h:161
 AliStaObjects.h:162
 AliStaObjects.h:163
 AliStaObjects.h:164
 AliStaObjects.h:165
 AliStaObjects.h:166
 AliStaObjects.h:167
 AliStaObjects.h:168
 AliStaObjects.h:169
 AliStaObjects.h:170
 AliStaObjects.h:171
 AliStaObjects.h:172
 AliStaObjects.h:173
 AliStaObjects.h:174
 AliStaObjects.h:175
 AliStaObjects.h:176
 AliStaObjects.h:177
 AliStaObjects.h:178
 AliStaObjects.h:179
 AliStaObjects.h:180
 AliStaObjects.h:181
 AliStaObjects.h:182
 AliStaObjects.h:183
 AliStaObjects.h:184
 AliStaObjects.h:185
 AliStaObjects.h:186
 AliStaObjects.h:187
 AliStaObjects.h:188
 AliStaObjects.h:189
 AliStaObjects.h:190
 AliStaObjects.h:191
 AliStaObjects.h:192
 AliStaObjects.h:193
 AliStaObjects.h:194
 AliStaObjects.h:195
 AliStaObjects.h:196
 AliStaObjects.h:197
 AliStaObjects.h:198
 AliStaObjects.h:199
 AliStaObjects.h:200
 AliStaObjects.h:201
 AliStaObjects.h:202
 AliStaObjects.h:203
 AliStaObjects.h:204
 AliStaObjects.h:205
 AliStaObjects.h:206
 AliStaObjects.h:207
 AliStaObjects.h:208
 AliStaObjects.h:209
 AliStaObjects.h:210
 AliStaObjects.h:211
 AliStaObjects.h:212
 AliStaObjects.h:213
 AliStaObjects.h:214
 AliStaObjects.h:215
 AliStaObjects.h:216
 AliStaObjects.h:217
 AliStaObjects.h:218
 AliStaObjects.h:219
 AliStaObjects.h:220
 AliStaObjects.h:221
 AliStaObjects.h:222
 AliStaObjects.h:223
 AliStaObjects.h:224
 AliStaObjects.h:225