]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDRun.cxx
Correct error message in case the trigger cluster syntax is wrong (second field is...
[u/mrichter/AliRoot.git] / STEER / AliESDRun.cxx
index 3ee56c830207670144af41c94f0a0beb3ec57ca2..3df26f4a0ee4b10df5c9ad6f7d8ac65986b1ad44 100644 (file)
@@ -13,6 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 #include <TNamed.h>
+#include <TGeoMatrix.h>
 
 #include "AliESDRun.h"
 #include "AliESDVertex.h"
@@ -37,8 +38,11 @@ AliESDRun::AliESDRun() :
   fTriggerClasses(kNTriggerClasses)
 {
   for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
-  for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
+  fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
+  fDiamondCovXY[1]=0.;
   fTriggerClasses.SetOwner(kTRUE);
+  for (Int_t m=0; m<kNPHOSMatrix; m++) fPHOSMatrix[m]=NULL;
+  for (Int_t sm=0; sm<kNEMCALMatrix; sm++) fEMCALMatrix[sm]=NULL;
 }
 
 //______________________________________________________________________________
@@ -58,6 +62,20 @@ AliESDRun::AliESDRun(const AliESDRun &esd) :
     TNamed *str = (TNamed *)((esd.fTriggerClasses).At(i));
     if (str) fTriggerClasses.AddAt(new TNamed(*str),i);
   }
+
+  for(Int_t m=0; m<kNPHOSMatrix; m++){
+    if(esd.fPHOSMatrix[m])
+      fPHOSMatrix[m]=new TGeoHMatrix(*(esd.fPHOSMatrix[m])) ;
+    else
+      fPHOSMatrix[m]=NULL;
+  }
+       
+  for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
+       if(esd.fEMCALMatrix[sm])
+               fEMCALMatrix[sm]=new TGeoHMatrix(*(esd.fEMCALMatrix[sm])) ;
+       else
+               fEMCALMatrix[sm]=NULL;
+  }
 }
 
 //______________________________________________________________________________
@@ -77,10 +95,52 @@ AliESDRun& AliESDRun::operator=(const AliESDRun &esd)
       TNamed *str = (TNamed *)((esd.fTriggerClasses).At(i));
       if (str) fTriggerClasses.AddAt(new TNamed(*str),i);
     }
+
+    for(Int_t m=0; m<kNPHOSMatrix; m++){
+      if(esd.fPHOSMatrix[m])
+       fPHOSMatrix[m]=new TGeoHMatrix(*(esd.fPHOSMatrix[m])) ;
+      else
+       fPHOSMatrix[m]=0;
+    }
+         
+       for(Int_t sm=0; sm<kNEMCALMatrix; sm++){
+         if(esd.fEMCALMatrix[sm])
+                 fEMCALMatrix[sm]=new TGeoHMatrix(*(esd.fEMCALMatrix[sm])) ;
+         else
+                 fEMCALMatrix[sm]=0;
+       }
   } 
   return *this;
 }
 
+void AliESDRun::Copy(TObject &obj) const{
+
+  // this overwrites the virtual TOBject::Copy()
+  // to allow run time copying without casting
+  // in AliESDEvent
+
+  if(this==&obj)return;
+  AliESDRun *robj = dynamic_cast<AliESDRun*>(&obj);
+  if(!robj)return; // not an aliesdrun
+  *robj = *this;
+
+}
+
+//______________________________________________________________________________
+AliESDRun::~AliESDRun() {
+  // Destructor
+  // Delete PHOS position matrices
+  for(Int_t m=0; m<kNPHOSMatrix; m++) {
+    if(fPHOSMatrix[m]) delete fPHOSMatrix[m] ;
+    fPHOSMatrix[m] = NULL;
+  }
+  // Delete PHOS position matrices
+  for(Int_t sm=0; sm<kNEMCALMatrix; sm++) {
+       if(fEMCALMatrix[sm]) delete fEMCALMatrix[sm] ;
+       fEMCALMatrix[sm] = NULL;
+  }
+}
+
 void AliESDRun::SetDiamond(const AliESDVertex *vertex) {
   // set the interaction diamond
   fDiamondXY[0]=vertex->GetXv();
@@ -119,7 +179,8 @@ void AliESDRun::Reset()
   fRecoVersion = 0;
   fMagneticField = 0;
   for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
-  for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
+  fDiamondCovXY[0]=fDiamondCovXY[2]=3.*3.;
+  fDiamondCovXY[1]=0.;
   fTriggerClasses.Clear();
 }
 
@@ -176,7 +237,7 @@ TString AliESDRun::GetFiredTriggerClasses(ULong64_t mask) const
   // class mask as an argument.
   TString trclasses;
   for(Int_t i = 0; i < kNTriggerClasses; i++) {
-    if (mask && (1 << i)) {
+    if (mask & (1 << i)) {
       TNamed *str = (TNamed *)((fTriggerClasses).At(i));
       if (str) {
        trclasses += " ";
@@ -202,7 +263,7 @@ Bool_t AliESDRun::IsTriggerClassFired(ULong64_t mask, const char *name) const
   Int_t iclass = fTriggerClasses.IndexOf(trclass);
   if (iclass < 0) return kFALSE;
 
-  if (mask && (1 << iclass))
+  if (mask & (1 << iclass))
     return kTRUE;
   else
     return kFALSE;