]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODHeader.h
Fixes for bug #52499: Field polarities inconsistiency
[u/mrichter/AliRoot.git] / STEER / AliAODHeader.h
index 7a0da9a1ce3aa2904c9e1d9ad66acfceee2bffc9..50b1a1b3427475aa9bf2e0e30e75ac7ead2662e9 100644 (file)
 #include "AliVHeader.h"
 #include "AliAODVertex.h"
 
+class TGeoHMatrix;
+
 class AliAODHeader : public AliVHeader {
 
  public :
   AliAODHeader();
  
-  AliAODHeader(Int_t nRun, UShort_t nBunchX, UInt_t nOrbit, UInt_t nPeriod, Char_t *title="");
+  AliAODHeader(Int_t nRun, UShort_t nBunchX, UInt_t nOrbit, UInt_t nPeriod, const Char_t *title="");
   AliAODHeader(Int_t nRun, 
               UShort_t nBunchX,
               UInt_t nOrbit,
@@ -33,11 +35,11 @@ class AliAODHeader : public AliVHeader {
               Double_t p1Energy,
               Double_t n2Energy,
               Double_t p2Energy,
-              Double_t emEnergy,
+              Double_t *emEnergy,
               ULong64_t fTriggerMask,
               UChar_t   fTriggerCluster,
               UInt_t    fEventType,
-              Char_t *title="");
+              const Char_t *title="");
   
   virtual ~AliAODHeader();
   AliAODHeader(const AliAODHeader& evt); 
@@ -58,10 +60,21 @@ class AliAODHeader : public AliVHeader {
   Double_t  GetZDCP1Energy()        const { return fZDCP1Energy; }
   Double_t  GetZDCN2Energy()        const { return fZDCN2Energy; }
   Double_t  GetZDCP2Energy()        const { return fZDCP2Energy; }
-  Double_t  GetZDCEMEnergy()        const { return fZDCEMEnergy; }
+  Double_t  GetZDCEMEnergy(Int_t i) const { return fZDCEMEnergy[i]; }
   Int_t     GetRefMultiplicity()    const { return fRefMult; }
   Int_t     GetRefMultiplicityPos() const { return fRefMultPos; }
   Int_t     GetRefMultiplicityNeg() const { return fRefMultNeg; }
+
+  Double_t  GetQTheta(UInt_t i) const;
+  UInt_t    GetNQTheta() const { return (UInt_t)fNQTheta; }
+
+  Double_t GetDiamondX() const {return fDiamondXY[0];}
+  Double_t GetDiamondY() const {return fDiamondXY[1];}
+  Double_t GetSigma2DiamondX() const {return fDiamondCovXY[0];}
+  Double_t GetSigma2DiamondY() const {return fDiamondCovXY[2];}
+  void GetDiamondCovXY(Float_t cov[3]) const {
+    for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return;
+  }
   
   void SetRunNumber(Int_t nRun)                { fRunNumber = nRun; }
   void SetBunchCrossNumber(UShort_t nBx)       { fBunchCrossNumber = nBx; }
@@ -78,13 +91,37 @@ class AliAODHeader : public AliVHeader {
   void SetZDCP1Energy(Double_t p1Energy)       { fZDCP1Energy = p1Energy; }
   void SetZDCN2Energy(Double_t n2Energy)       { fZDCN2Energy = n2Energy; }
   void SetZDCP2Energy(Double_t p2Energy)       { fZDCP2Energy = p2Energy; }
-  void SetZDCEMEnergy(Double_t emEnergy)       { fZDCEMEnergy = emEnergy; }
+  void SetZDCEMEnergy(Double_t emEnergy1, Double_t emEnergy2)      
+       { fZDCEMEnergy[0] = emEnergy1; fZDCEMEnergy[1] = emEnergy2;}
   void SetRefMultiplicity(Int_t refMult)       { fRefMult = refMult; }
   void SetRefMultiplicityPos(Int_t refMultPos) { fRefMultPos = refMultPos; }
   void SetRefMultiplicityNeg(Int_t refMultNeg) { fRefMultNeg = refMultNeg; }
   
+  void SetQTheta(Double_t *QTheta, UInt_t size = 5);  
+  void RemoveQTheta();
+
+  void SetDiamond(Float_t xy[2],Float_t cov[3]) { 
+    for(Int_t i=0;i<3;i++) {if(i<2) fDiamondXY[i]=xy[i]; fDiamondCovXY[i]=cov[i];}
+  }
+
   void Print(Option_t* option = "") const;
+
+  void    SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {
+      if ((i >= 0) && (i < kNPHOSMatrix)) fPHOSMatrix[i] = matrix;
+  }
+  const TGeoHMatrix* GetPHOSMatrix(Int_t i) const {
+      return ((i >= 0) && (i < kNPHOSMatrix)) ? fPHOSMatrix[i] : NULL;
+  }
+  
+  void    SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) {
+      if ((i >= 0) && (i < kNEMCALMatrix)) fEMCALMatrix[i] = matrix;
+  }
+  const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {
+      return ((i >= 0) && (i < kNEMCALMatrix)) ? fEMCALMatrix[i] : NULL;
+  }
   
+  enum {kNPHOSMatrix = 5};
+  enum {kNEMCALMatrix = 12};
   
  private :
   
@@ -95,7 +132,9 @@ class AliAODHeader : public AliVHeader {
   Double32_t  fZDCP1Energy;         // reconstructed energy in the proton1 ZDC
   Double32_t  fZDCN2Energy;         // reconstructed energy in the neutron2 ZDC
   Double32_t  fZDCP2Energy;         // reconstructed energy in the proton2 ZDC
-  Double32_t  fZDCEMEnergy;         // reconstructed energy in the electromagnetic ZDC
+  Double32_t  fZDCEMEnergy[2];      // reconstructed energy in the electromagnetic ZDCs
+  Int_t       fNQTheta;             // number of QTheta elements
+  Double32_t *fQTheta;              // [fNQTheta] values to store Lee-Yang-Zeros
   ULong64_t   fTriggerMask;         // Trigger Type (mask)
   Int_t       fRunNumber;           // Run Number
   Int_t       fRefMult;             // reference multiplicity
@@ -106,8 +145,13 @@ class AliAODHeader : public AliVHeader {
   UInt_t      fPeriodNumber;        // Period Number
   UShort_t    fBunchCrossNumber;    // BunchCrossingNumber
   UChar_t     fTriggerCluster;      // Trigger cluster (mask)
-  
-  ClassDef(AliAODHeader,5);
+
+  Double32_t      fDiamondXY[2];    // Interaction diamond (x,y) in RUN
+  Double32_t      fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN
+  TGeoHMatrix*    fPHOSMatrix[kNPHOSMatrix];   //PHOS module position and orientation matrices
+  TGeoHMatrix*    fEMCALMatrix[kNEMCALMatrix]; //EMCAL supermodule position and orientation matrices
+
+  ClassDef(AliAODHeader,8);
 };
 
 #endif