Additions for Neutral and charged fraction, error on area estimates
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 24 Jul 2009 11:39:57 +0000 (11:39 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 24 Jul 2009 11:39:57 +0000 (11:39 +0000)
STEER/AliAODJet.cxx
STEER/AliAODJet.h

index 7083c50..b3b2c6e 100644 (file)
@@ -29,6 +29,8 @@ ClassImp(AliAODJet)
 //______________________________________________________________________________
 AliAODJet::AliAODJet() :
     AliVParticle(),
+    fNeutralFraction(0),
+    fTrigger(0),
     fMomentum(0),
     fRefTracks(new TRefArray())
 {
@@ -37,10 +39,13 @@ AliAODJet::AliAODJet() :
     fBackgEnergy[1]   = 0.;
     fEffectiveArea[0] = 0.;   
     fEffectiveArea[1] = 0.;   
+    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;
 }
 
 AliAODJet::AliAODJet(Double_t px, Double_t py, Double_t pz, Double_t e):
     AliVParticle(),
+    fNeutralFraction(0),
+    fTrigger(0),
     fMomentum(0),
     fRefTracks(new TRefArray())
 {
@@ -48,12 +53,15 @@ AliAODJet::AliAODJet(Double_t px, Double_t py, Double_t pz, Double_t e):
     fBackgEnergy[0]   = 0.;     
     fBackgEnergy[1]   = 0.;
     fEffectiveArea[0] = 0.;   
-    fEffectiveArea[1] = 0.;   
+    fEffectiveArea[1] = 0.;
+    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;   
     fMomentum = new TLorentzVector(px, py, pz, e);
 }
 
 AliAODJet::AliAODJet(TLorentzVector & p):
     AliVParticle(),
+    fNeutralFraction(0),
+    fTrigger(0),
     fMomentum(0),
     fRefTracks(new TRefArray())
 {
@@ -61,7 +69,8 @@ AliAODJet::AliAODJet(TLorentzVector & p):
     fBackgEnergy[0]   = 0.;     
     fBackgEnergy[1]   = 0.;
     fEffectiveArea[0] = 0.;   
-    fEffectiveArea[1] = 0.;   
+    fEffectiveArea[1] = 0.;
+    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;    
     fMomentum = new TLorentzVector(p);
 }
 
@@ -77,6 +86,8 @@ AliAODJet::~AliAODJet()
 //______________________________________________________________________________
 AliAODJet::AliAODJet(const AliAODJet& jet) :
     AliVParticle(jet),
+    fNeutralFraction(jet.fNeutralFraction),
+    fTrigger(jet.fTrigger),
     fMomentum(0),
     fRefTracks(0)
 {
@@ -85,7 +96,8 @@ AliAODJet::AliAODJet(const AliAODJet& jet) :
     fBackgEnergy[1]   = jet.fBackgEnergy[1];
     fEffectiveArea[0] = jet.fEffectiveArea[0];
     fEffectiveArea[1] = jet.fEffectiveArea[1];
-
+    fEffectiveAreaError[0] = jet.fEffectiveAreaError[0];
+    fEffectiveAreaError[1] = jet.fEffectiveAreaError[1];
     fMomentum  = new TLorentzVector(*jet.fMomentum);
     fRefTracks = new TRefArray(*jet.fRefTracks);
 }
@@ -100,7 +112,10 @@ AliAODJet& AliAODJet::operator=(const AliAODJet& jet)
     fBackgEnergy[1]   = jet.fBackgEnergy[1];
     fEffectiveArea[0] = jet.fEffectiveArea[0];
     fEffectiveArea[1] = jet.fEffectiveArea[1];
-
+    fEffectiveAreaError[0] = jet.fEffectiveAreaError[0];
+    fEffectiveAreaError[1] = jet.fEffectiveAreaError[1];
+    fNeutralFraction = jet.fNeutralFraction;
+    fTrigger = jet.fTrigger;
     delete fMomentum;
     fMomentum  = new TLorentzVector(*jet.fMomentum);
     delete fRefTracks;
index 4c91a55..cdcb8ec 100644 (file)
@@ -43,15 +43,23 @@ class AliAODJet : public AliVParticle {
     virtual Double_t Yv()         const {return -999.;} //
     virtual Double_t Zv()         const {return -999.;} //
     virtual Bool_t   XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; }  
+    virtual Bool_t   IsTriggeredEMCAL(){return (fTrigger&kEMCALTriggered)==kEMCALTriggered;}
+    virtual Bool_t   IsTriggeredTRD(){return (fTrigger&kTRDTriggered)==kTRDTriggered;}
+    virtual UChar_t  Trigger(){return fTrigger;}
 
-//
     virtual void     AddTrack(TObject *tr) {fRefTracks->Add(tr);}
     TObject* GetTrack(Int_t i) {return fRefTracks->At(i);}
     virtual void     SetBgEnergy(Double_t bgEnCh, Double_t bgEnNe)
        {fBackgEnergy[0] = bgEnCh; fBackgEnergy[1] = bgEnNe;}
-    virtual void     SetEffArea(Double_t effACh, Double_t effANe)
-       {fEffectiveArea[0] = effACh; fEffectiveArea[1] = effANe;}
+    virtual void     SetEffArea(Double_t effACh, Double_t effANe, Double_t effAErrCh = 0, Double_t effAErrNe = 0)
+       {
+         fEffectiveArea[0] = effACh; fEffectiveArea[1] = effANe;
+         fEffectiveAreaError[0] = effAErrCh;
+         fEffectiveAreaError[1] = effAErrNe;
+       }
     virtual void     SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e);
+    virtual void     SetTrigger(UChar_t f){fTrigger |= f;}
+    virtual void     ResetTrigger(UChar_t f){fTrigger &= ~f;}
 
     virtual TRefArray* GetRefTracks()           const { return  fRefTracks;}
     virtual Double_t   ChargedBgEnergy()        const { return  fBackgEnergy[0];}
@@ -60,6 +68,8 @@ class AliAODJet : public AliVParticle {
 
     virtual Double_t   EffectiveAreaCharged()   const { return  fEffectiveArea[0];}
     virtual Double_t   EffectiveAreaNeutral()   const { return  fEffectiveArea[1];}
+    virtual Double_t   ErrorEffectiveAreaCharged()   const { return  fEffectiveAreaError[0];}
+    virtual Double_t   ErrorEffectiveAreaNeutral()   const { return  fEffectiveAreaError[1];}
     virtual Double_t   DeltaR(const AliVParticle* part);
 
     
@@ -72,6 +82,9 @@ class AliAODJet : public AliVParticle {
     virtual Int_t   GetLabel()    const { return -1;}
 //
 
+
+
+
     /** Compare this class with an other instance of this class
      *  used in a TClonesArray::Sort()
      *  @param   obj  ptr to other instance
@@ -86,14 +99,22 @@ class AliAODJet : public AliVParticle {
      */
     Bool_t IsSortable() const  { return kTRUE; }
 
- private:
-    Double32_t      fBackgEnergy[2];     // Subtracted background energy
-    Double32_t      fEffectiveArea[2];   // Effective jet area used for background subtraction
+    // first only one bit for EMCAL and TRD, leave space for more
+    // trigger types and/or other detectors
+    enum {kEMCALTriggered = 1<<0,
+         kTRDTriggered = 4<<0};
+
 
+ private:
+    Double32_t      fBackgEnergy[2];        // Subtracted background energy
+    Double32_t      fEffectiveArea[2];      // Effective jet area used for background subtraction
+    Double32_t      fEffectiveAreaError[2];  //[0,1,10] relative error of jet areas, 10 bit precision
+    Double32_t      fNeutralFraction;       //[0,1,12] Neutral fraction between 0 and 1 12 bit precision;
+    UChar_t         fTrigger;             // Bit mask to flag jets triggered by a certain detector  
     TLorentzVector* fMomentum;           // Jet 4-momentum vector
     TRefArray*      fRefTracks;          // array of references to the tracks belonging to the jet
 
-    ClassDef(AliAODJet,4);
+    ClassDef(AliAODJet,5);
 
 };