]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODHeader.cxx
Updated task list
[u/mrichter/AliRoot.git] / STEER / AliAODHeader.cxx
index be37076223ab6ebe1bd7bcc1e49f783d437bed71..e69585c3aac4b9531128828200b8d68ceea6a0eb 100644 (file)
@@ -26,96 +26,163 @@ ClassImp(AliAODHeader)
 
 //______________________________________________________________________________
 AliAODHeader::AliAODHeader() : 
-  TNamed("header",""),
+  AliVHeader(),
   fMagneticField(-999.),
+  fMuonMagFieldScale(-999.),
   fCentrality(-999.),
+  fZDCN1Energy(-999.),
+  fZDCP1Energy(-999.),
+  fZDCN2Energy(-999.),
+  fZDCP2Energy(-999.),
+  fNQTheta(0),
+  fQTheta(0x0),
   fTriggerMask(0),
-  fEventType(0),
-  fBunchCrossNumber(0),
-  fOrbitNumber(0),
   fRunNumber(-999),  
   fRefMult(-999),
   fRefMultPos(-999),
   fRefMultNeg(-999),
+  fEventType(0),
+  fOrbitNumber(0),
+  fPeriodNumber(0),
+  fBunchCrossNumber(0),
   fTriggerCluster(0)
 {
   // default constructor
 
+  SetName("header");
+  for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
+  for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
+  fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
+  fDiamondCovXY[1]=0.;
 }
 
 //______________________________________________________________________________
 AliAODHeader::AliAODHeader(Int_t nRun, 
                           UShort_t nBunchX,
                           UInt_t nOrbit,
-                          Char_t *title) :
-  TNamed("header", title),
+                          UInt_t nPeriod,
+                          const Char_t *title) :
+  AliVHeader(),
   fMagneticField(-999.),
+  fMuonMagFieldScale(-999.),
   fCentrality(-999.),
+  fZDCN1Energy(-999.),
+  fZDCP1Energy(-999.),
+  fZDCN2Energy(-999.),
+  fZDCP2Energy(-999.),
+  fNQTheta(0),
+  fQTheta(0x0),
   fTriggerMask(0),
-  fEventType(0),
-  fBunchCrossNumber(nBunchX),
-  fOrbitNumber(nOrbit),
   fRunNumber(nRun),
   fRefMult(-999),
   fRefMultPos(-999),
   fRefMultNeg(-999),
+  fEventType(0),
+  fOrbitNumber(nOrbit),
+  fPeriodNumber(nPeriod),
+  fBunchCrossNumber(nBunchX),
   fTriggerCluster(0)
 {
   // constructor
+
+  SetName("header");
+  SetTitle(title);
+  for(int j=0; j<2; j++) fZDCEMEnergy[j] = -999.;
+  for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
+  fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
+  fDiamondCovXY[1]=0.;
 }
 
 //______________________________________________________________________________
 AliAODHeader::AliAODHeader(Int_t nRun, 
                           UShort_t nBunchX,
                           UInt_t nOrbit,
+                          UInt_t nPeriod,
                           Int_t refMult,
                           Int_t refMultPos,
                           Int_t refMultNeg,
                           Double_t magField,
+                          Double_t muonMagFieldScale,
                           Double_t cent,
-                          ULong64_t trigMask,
+                          Double_t n1Energy,
+                          Double_t p1Energy,
+                          Double_t n2Energy,
+                          Double_t p2Energy,
+                          Double_t *emEnergy,
+                          ULong64_t trigMask,
                           UChar_t trigClus,
                           UInt_t evttype,
-                          Char_t *title) :
-  TNamed("header",title),
+                          const Char_t *title) :
+  AliVHeader(),
   fMagneticField(magField),
+  fMuonMagFieldScale(muonMagFieldScale),
   fCentrality(cent),
+  fZDCN1Energy(n1Energy),
+  fZDCP1Energy(p1Energy),
+  fZDCN2Energy(n2Energy),
+  fZDCP2Energy(p2Energy),
+  fNQTheta(0),
+  fQTheta(0x0),
   fTriggerMask(trigMask),
-  fEventType(evttype),
-  fOrbitNumber(nOrbit),
-  fBunchCrossNumber(nBunchX),
   fRunNumber(nRun),  
   fRefMult(refMult),
   fRefMultPos(refMultPos),
   fRefMultNeg(refMultNeg),
+  fEventType(evttype),
+  fOrbitNumber(nOrbit),
+  fPeriodNumber(nPeriod),
+  fBunchCrossNumber(nBunchX),
   fTriggerCluster(trigClus)
 {
   // constructor
+
+  SetName("header");
+  SetTitle(title);
+  for(int j=0; j<2; j++) fZDCEMEnergy[j] = emEnergy[j];
+  for(Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
+  fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
+  fDiamondCovXY[1]=0.;
 }
 
 //______________________________________________________________________________
 AliAODHeader::~AliAODHeader() 
 {
   // destructor
-
+  
+  RemoveQTheta();
 }
 
 //______________________________________________________________________________
 AliAODHeader::AliAODHeader(const AliAODHeader& hdr) :
-  TNamed(hdr),
+  AliVHeader(hdr),
   fMagneticField(hdr.fMagneticField),
+  fMuonMagFieldScale(hdr.fMuonMagFieldScale),
   fCentrality(hdr.fCentrality),
+  fZDCN1Energy(hdr.fZDCN1Energy),
+  fZDCP1Energy(hdr.fZDCP1Energy),
+  fZDCN2Energy(hdr.fZDCN2Energy),
+  fZDCP2Energy(hdr.fZDCP2Energy),
+  fNQTheta(0),
+  fQTheta(0x0),
   fTriggerMask(hdr.fTriggerMask),
-  fEventType(hdr.fEventType),
-  fOrbitNumber(hdr.fOrbitNumber),
-  fBunchCrossNumber(hdr.fBunchCrossNumber),
   fRunNumber(hdr.fRunNumber),  
   fRefMult(hdr.fRefMult), 
   fRefMultPos(hdr.fRefMultPos), 
   fRefMultNeg(hdr.fRefMultNeg),
+  fEventType(hdr.fEventType),
+  fOrbitNumber(hdr.fOrbitNumber),
+  fPeriodNumber(hdr.fPeriodNumber),
+  fBunchCrossNumber(hdr.fBunchCrossNumber),
   fTriggerCluster(hdr.fTriggerCluster)
 {
   // Copy constructor.
+  
+  SetName(hdr.fName);
+  SetTitle(hdr.fTitle);
+  SetQTheta(hdr.fQTheta, hdr.fNQTheta);
+  SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
+  for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
+  for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
 }
 
 //______________________________________________________________________________
@@ -123,26 +190,79 @@ AliAODHeader& AliAODHeader::operator=(const AliAODHeader& hdr)
 {
   // Assignment operator
   if(this!=&hdr) {
-
-    // TObject
-    TNamed::operator=(hdr);
+    
+     AliVHeader::operator=(hdr);
     
     fMagneticField    = hdr.fMagneticField;
+    fMuonMagFieldScale= hdr.fMuonMagFieldScale;
     fCentrality       = hdr.fCentrality;
+    fZDCN1Energy      = hdr.fZDCN1Energy;
+    fZDCP1Energy      = hdr.fZDCP1Energy;
+    fZDCN2Energy      = hdr.fZDCN2Energy;
+    fZDCP2Energy      = hdr.fZDCP2Energy;
     fTriggerMask      = hdr.fTriggerMask;
-    fEventType        = hdr.fEventType;
-    fOrbitNumber      = hdr.fOrbitNumber;
-    fBunchCrossNumber = hdr.fBunchCrossNumber;
     fRunNumber        = hdr.fRunNumber;
     fRefMult          = hdr.fRefMult;
     fRefMultPos       = hdr.fRefMultPos;
     fRefMultNeg       = hdr.fRefMultNeg;
+    fEventType        = hdr.fEventType;
+    fOrbitNumber      = hdr.fOrbitNumber;
+    fPeriodNumber     = hdr.fPeriodNumber;
+    fBunchCrossNumber = hdr.fBunchCrossNumber;
     fTriggerCluster   = hdr.fTriggerCluster;
+
+    SetName(hdr.fName);
+    SetTitle(hdr.fTitle);
+    SetQTheta(hdr.fQTheta, hdr.fNQTheta);
+    SetZDCEMEnergy(hdr.fZDCEMEnergy[0], hdr.fZDCEMEnergy[1]);
+    for(Int_t i=0; i<2; i++) fDiamondXY[i]=hdr.fDiamondXY[i];
+    for(Int_t i=0; i<3; i++) fDiamondCovXY[i]=hdr.fDiamondCovXY[i];
   }
 
+
   return *this;
 }
 
+//______________________________________________________________________________
+void AliAODHeader::SetQTheta(Double_t *QTheta, UInt_t size) 
+{
+  if (QTheta && size>0) {
+    if (size != (UInt_t)fNQTheta) {
+      RemoveQTheta();
+      fNQTheta = size;
+      fQTheta = new Double_t[fNQTheta];
+    }
+    
+    for (Int_t i = 0; i < fNQTheta; i++) {
+      fQTheta[i] = QTheta[i];
+    }
+  } else {
+    RemoveQTheta();
+  }
+
+  return;
+}
+
+//______________________________________________________________________________
+Double_t AliAODHeader::GetQTheta(UInt_t i) const
+{
+  if (fQTheta && i < (UInt_t)fNQTheta) {
+    return fQTheta[i];
+  } else {
+    return -999.;
+  }
+}
+
+//______________________________________________________________________________
+void AliAODHeader::RemoveQTheta()
+{
+  delete[] fQTheta;
+  fQTheta = 0x0;
+  fNQTheta = 0;
+
+  return;
+}
+
 //______________________________________________________________________________
 void AliAODHeader::Print(Option_t* /*option*/) const 
 {
@@ -151,14 +271,29 @@ void AliAODHeader::Print(Option_t* /*option*/) const
   printf("Run #                   : %d\n", fRunNumber);
   printf("Bunch Crossing  #       : %d\n", fBunchCrossNumber);
   printf("Orbit Number #          : %d\n", fOrbitNumber);
+  printf("Period Number #         : %d\n", fPeriodNumber);
   printf("Trigger mask            : %lld\n", fTriggerMask);
   printf("Trigger cluster         : %d\n", fTriggerCluster);
   printf("Event Type              : %d\n", fEventType);
   printf("Magnetic field          : %f\n", fMagneticField);
+  printf("Muon mag. field scale   : %f\n", fMuonMagFieldScale);
   
   printf("Centrality              : %f\n", fCentrality);
+  printf("ZDC N1 Energy           : %f\n", fZDCN1Energy);
+  printf("ZDC P1 Energy           : %f\n", fZDCP1Energy);
+  printf("ZDC N2 Energy           : %f\n", fZDCN2Energy);
+  printf("ZDC P2 Energy           : %f\n", fZDCP2Energy);
+  printf("ZDC EM1 Energy          : %f\n", fZDCEMEnergy[0]);
+  printf("ZDC EM2 Energy          : %f\n", fZDCEMEnergy[1]);
   printf("ref. Multiplicity       : %d\n", fRefMult);
   printf("ref. Multiplicity (pos) : %d\n", fRefMultPos);
   printf("ref. Multiplicity (neg) : %d\n", fRefMultNeg);
 
+  if (fQTheta) {
+    for (UInt_t i = 0; i<(UInt_t)fNQTheta; i++) {
+      printf("QTheta[%d]              : %13.3e\n", i, GetQTheta(i));
+    }
+  }
+
+  return;
 }