]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODHeader.cxx
New class AliTriggerUtils to solve the cirular dependency between libESD and libSTEER...
[u/mrichter/AliRoot.git] / STEER / AliAODHeader.cxx
index 626d98fc601240b3f6935c9c624f7ee5b345110c..ebdc361fbdf7b63b8536343f5d1b81fe06a2e0e6 100644 (file)
@@ -21,6 +21,8 @@
 //-------------------------------------------------------------------------
 
 #include "AliAODHeader.h"
+#include "AliCentrality.h"
+#include "AliEventplane.h"
 #include <TGeoMatrix.h>
 #include <TObjString.h>
 
@@ -32,6 +34,7 @@ AliAODHeader::AliAODHeader() :
   fMagneticField(-999.),
   fMuonMagFieldScale(-999.),
   fCentrality(-999.),
+  fEventplane(-999.),
   fZDCN1Energy(-999.),
   fZDCP1Energy(-999.),
   fZDCN2Energy(-999.),
@@ -44,11 +47,24 @@ AliAODHeader::AliAODHeader() :
   fRefMult(-999),
   fRefMultPos(-999),
   fRefMultNeg(-999),
+  fNMuons(0),
+  fNDimuons(0),
   fEventType(0),
   fOrbitNumber(0),
   fPeriodNumber(0),
   fBunchCrossNumber(0),
-  fTriggerCluster(0)
+  fTriggerCluster(0), 
+  fDiamondZ(0.), 
+  fDiamondSig2Z(0.),
+  fOfflineTrigger(0),
+  fESDFileName(""),
+  fEventNumberESDFile(-1),
+  fL0TriggerInputs(0),
+  fL1TriggerInputs(0),
+  fL2TriggerInputs(0),
+  fTPConlyRefMult(-1), 
+  fCentralityP(0),
+  fEventplaneP(0)
 {
   // default constructor
 
@@ -59,6 +75,7 @@ AliAODHeader::AliAODHeader() :
   fDiamondCovXY[1]=0.;
   for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
   for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
+  for (Int_t i = 0; i < 6; i++)  fITSClusters[i] = 0;
 }
 
 //______________________________________________________________________________
@@ -71,6 +88,7 @@ AliAODHeader::AliAODHeader(Int_t nRun,
   fMagneticField(-999.),
   fMuonMagFieldScale(-999.),
   fCentrality(-999.),
+  fEventplane(-999.),
   fZDCN1Energy(-999.),
   fZDCP1Energy(-999.),
   fZDCN2Energy(-999.),
@@ -83,11 +101,24 @@ AliAODHeader::AliAODHeader(Int_t nRun,
   fRefMult(-999),
   fRefMultPos(-999),
   fRefMultNeg(-999),
+  fNMuons(0),
+  fNDimuons(0),
   fEventType(0),
   fOrbitNumber(nOrbit),
   fPeriodNumber(nPeriod),
   fBunchCrossNumber(nBunchX),
-  fTriggerCluster(0)
+  fTriggerCluster(0), 
+  fDiamondZ(0.), 
+  fDiamondSig2Z(0.),
+  fOfflineTrigger(0),
+  fESDFileName(""),
+  fEventNumberESDFile(-1),
+  fL0TriggerInputs(0),
+  fL1TriggerInputs(0),
+  fL2TriggerInputs(0),
+  fTPConlyRefMult(-1), 
+  fCentralityP(0),
+  fEventplaneP(0)
 {
   // constructor
 
@@ -112,6 +143,7 @@ AliAODHeader::AliAODHeader(Int_t nRun,
                           Double_t magField,
                           Double_t muonMagFieldScale,
                           Double_t cent,
+                          Double_t eventplane,
                           Double_t n1Energy,
                           Double_t p1Energy,
                           Double_t n2Energy,
@@ -120,11 +152,14 @@ AliAODHeader::AliAODHeader(Int_t nRun,
                           ULong64_t trigMask,
                           UChar_t trigClus,
                           UInt_t evttype,
-                          const Char_t *title) :
+                          const Char_t *title,
+                          Int_t nMuons,
+                          Int_t nDimuons) :
   AliVHeader(),
   fMagneticField(magField),
   fMuonMagFieldScale(muonMagFieldScale),
   fCentrality(cent),
+  fEventplane(eventplane),
   fZDCN1Energy(n1Energy),
   fZDCP1Energy(p1Energy),
   fZDCN2Energy(n2Energy),
@@ -137,11 +172,24 @@ AliAODHeader::AliAODHeader(Int_t nRun,
   fRefMult(refMult),
   fRefMultPos(refMultPos),
   fRefMultNeg(refMultNeg),
+  fNMuons(nMuons),
+  fNDimuons(nDimuons),
   fEventType(evttype),
   fOrbitNumber(nOrbit),
   fPeriodNumber(nPeriod),
   fBunchCrossNumber(nBunchX),
-  fTriggerCluster(trigClus)
+  fTriggerCluster(trigClus),
+  fDiamondZ(0.), 
+  fDiamondSig2Z(0.),
+  fOfflineTrigger(0),
+  fESDFileName(""),
+  fEventNumberESDFile(-1),
+  fL0TriggerInputs(0),
+  fL1TriggerInputs(0),
+  fL2TriggerInputs(0),
+  fTPConlyRefMult(-1), 
+  fCentralityP(0),
+  fEventplaneP(0)
 {
   // constructor
 
@@ -153,13 +201,15 @@ AliAODHeader::AliAODHeader(Int_t nRun,
   fDiamondCovXY[1]=0.;
   for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
   for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
+  for (Int_t i = 0; i < 6; i++)  fITSClusters[i] = 0;
 }
 
 //______________________________________________________________________________
 AliAODHeader::~AliAODHeader() 
 {
   // destructor
-  
+  delete fCentralityP;
+  delete fEventplaneP;
   RemoveQTheta();
 }
 
@@ -169,6 +219,7 @@ AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
   fMagneticField(hdr.fMagneticField),
   fMuonMagFieldScale(hdr.fMuonMagFieldScale),
   fCentrality(hdr.fCentrality),
+  fEventplane(hdr.fEventplane),
   fZDCN1Energy(hdr.fZDCN1Energy),
   fZDCP1Energy(hdr.fZDCP1Energy),
   fZDCN2Energy(hdr.fZDCN2Energy),
@@ -181,11 +232,24 @@ AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
   fRefMult(hdr.fRefMult), 
   fRefMultPos(hdr.fRefMultPos), 
   fRefMultNeg(hdr.fRefMultNeg),
+  fNMuons(hdr.fNMuons),
+  fNDimuons(hdr.fNDimuons),
   fEventType(hdr.fEventType),
   fOrbitNumber(hdr.fOrbitNumber),
   fPeriodNumber(hdr.fPeriodNumber),
   fBunchCrossNumber(hdr.fBunchCrossNumber),
-  fTriggerCluster(hdr.fTriggerCluster)
+  fTriggerCluster(hdr.fTriggerCluster), 
+  fDiamondZ(hdr.fDiamondZ), 
+  fDiamondSig2Z(hdr.fDiamondSig2Z),
+  fOfflineTrigger(hdr.fOfflineTrigger),
+  fESDFileName(hdr.fESDFileName),
+  fEventNumberESDFile(hdr.fEventNumberESDFile),
+  fL0TriggerInputs(hdr.fL0TriggerInputs),
+  fL1TriggerInputs(hdr.fL1TriggerInputs),
+  fL2TriggerInputs(hdr.fL2TriggerInputs),
+  fTPConlyRefMult(hdr.fTPConlyRefMult), 
+  fCentralityP(new AliCentrality(*hdr.fCentralityP)),
+  fEventplaneP(new AliEventplane(*hdr.fEventplaneP))
 {
   // Copy constructor.
   
@@ -210,7 +274,7 @@ AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
       else
          fEMCALMatrix[sm]=0;
   }
-
+  for (Int_t i = 0; i < 6; i++)  fITSClusters[i] = hdr.fITSClusters[i];
 }
 
 //______________________________________________________________________________
@@ -224,6 +288,7 @@ AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
     fMagneticField    = hdr.fMagneticField;
     fMuonMagFieldScale= hdr.fMuonMagFieldScale;
     fCentrality       = hdr.fCentrality;
+    fEventplane       = hdr.fEventplane;
     fZDCN1Energy      = hdr.fZDCN1Energy;
     fZDCP1Energy      = hdr.fZDCP1Energy;
     fZDCN2Energy      = hdr.fZDCN2Energy;
@@ -239,6 +304,27 @@ AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
     fPeriodNumber     = hdr.fPeriodNumber;
     fBunchCrossNumber = hdr.fBunchCrossNumber;
     fTriggerCluster   = hdr.fTriggerCluster;
+    fNMuons           = hdr.fNMuons;
+    fNDimuons         = hdr.fNDimuons;
+    fDiamondZ         = hdr.fDiamondZ;
+    fDiamondSig2Z     = hdr.fDiamondSig2Z;
+    fOfflineTrigger   = hdr.fOfflineTrigger;
+    fESDFileName      = hdr.fESDFileName;
+    fEventNumberESDFile = hdr.fEventNumberESDFile;
+    fL0TriggerInputs    = hdr.fL0TriggerInputs;
+    fL1TriggerInputs    = hdr.fL1TriggerInputs;
+    fL2TriggerInputs    = hdr.fL2TriggerInputs;
+    fTPConlyRefMult     = hdr.fTPConlyRefMult;
+
+    if(hdr.fEventplaneP){
+      if(fEventplaneP)*fEventplaneP = *hdr.fEventplaneP;
+      else fEventplaneP = new AliEventplane(*hdr.fEventplaneP);
+    }
+
+    if(hdr.fCentralityP){
+      if(fCentralityP)*fCentralityP = *hdr.fCentralityP;
+      else fCentralityP = new AliCentrality(*hdr.fCentralityP);
+    }
 
     SetName(hdr.fName);
     SetTitle(hdr.fTitle);
@@ -248,22 +334,26 @@ AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
     for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
 
     for(Int_t m=0; m<kNPHOSMatrix; m++){
-       if(hdr.fPHOSMatrix[m])
-           fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
-       else
-           fPHOSMatrix[m]=0;
+      if(hdr.fPHOSMatrix[m]){
+       if(fPHOSMatrix[m])delete fPHOSMatrix[m];
+       fPHOSMatrix[m]=new TGeoHMatrix(*(hdr.fPHOSMatrix[m])) ;
+      }
+      else
+       fPHOSMatrix[m]=0;
     }
     
     for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
-       if(hdr.fEMCALMatrix[sm])
-           fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
-       else
-           fEMCALMatrix[sm]=0;
-  }
-
+      if(hdr.fEMCALMatrix[sm]){
+       if(fEMCALMatrix[sm])delete fEMCALMatrix[sm];
+       fEMCALMatrix[sm]=new TGeoHMatrix(*(hdr.fEMCALMatrix[sm])) ;
+      }
+      else
+       fEMCALMatrix[sm]=0;
+    }
+    
   }
 
-
+  for (Int_t i = 0; i < 6; i++)  fITSClusters[i] = hdr.fITSClusters[i];
   return *this;
 }
 
@@ -307,6 +397,23 @@ void AliAODHeader::RemoveQTheta()
   return;
 }
 
+void AliAODHeader::Clear(Option_t* /*opt*/)
+{
+// Clear memory
+  RemoveQTheta();
+  if (fCentralityP){
+    delete fCentralityP;
+    fCentralityP = 0;
+    fCentrality = -999;
+  }
+  if (fEventplaneP){
+    delete fEventplaneP;
+    fEventplaneP = 0;
+    fEventplane = -999;
+  }
+  return;
+}
+
 //______________________________________________________________________________
 void AliAODHeader::Print(Option_t* /*option*/) const 
 {
@@ -323,6 +430,7 @@ void AliAODHeader::Print(Option_t* /*option*/) const
   printf("Muon mag. field scale   : %f\n", fMuonMagFieldScale);
   
   printf("Centrality              : %f\n", fCentrality);
+  printf("Event plane             : %f\n", fEventplane);
   printf("ZDC N1 Energy           : %f\n", fZDCN1Energy);
   printf("ZDC P1 Energy           : %f\n", fZDCP1Energy);
   printf("ZDC N2 Energy           : %f\n", fZDCN2Energy);
@@ -332,6 +440,9 @@ void AliAODHeader::Print(Option_t* /*option*/) const
   printf("ref. Multiplicity       : %d\n", fRefMult);
   printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
   printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
+  printf("number of muons         : %d\n", fNMuons);
+  printf("number of dimuons       : %d\n", fNDimuons);
+  printf("offline trigger         : %u\n", fOfflineTrigger);
 
   if (fQTheta) {
     for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {