]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRunTag.cxx
Analysis with correction for double hits (work in progress) and analysis independent...
[u/mrichter/AliRoot.git] / STEER / AliRunTag.cxx
index d67bcfc06c5f84079a45a0129685ed1aac28efb0..e5b8d558943115356fe844d6f2d8985cca8f7a2f 100644 (file)
@@ -45,8 +45,13 @@ ClassImp(AliRunTag)
     fNumEvents(0),
     fNumDetectors(0),
     fEventTag("AliEventTag", 1000),
-    fDetectorTag("AliDetectorTag", 1000),
-    fLHCTag()
+    fDetectorTag(),
+    fLHCTag(), 
+    fQA(),  
+    fQALength(0), 
+    fQAArray(NULL), 
+    fESLength(0), 
+    fEventSpecies(NULL)
 {
   //Default constructor
 }
@@ -55,19 +60,154 @@ ClassImp(AliRunTag)
 AliRunTag::~AliRunTag() {
   //Destructor
   fEventTag.Delete();
-  fDetectorTag.Delete();
+  if ( fQAArray ) 
+    delete [] fQAArray ; 
+  if ( fEventSpecies )
+    delete [] fEventSpecies ; 
 }
 
 //___________________________________________________________________________
-void AliRunTag::SetLHCTag(Float_t lumin, char *type) {
+AliRunTag::AliRunTag(const AliRunTag& tag):
+TObject(),
+fAliceRunId(tag.fAliceRunId),
+fAliceMagneticField(tag.fAliceMagneticField),
+fAliceRunStartTime(tag.fAliceRunStartTime),
+fAliceRunStopTime(fAliceRunStopTime),
+fAlirootVersion(tag.fAlirootVersion),
+fRootVersion(tag.fRootVersion),
+fGeant3Version(tag.fGeant3Version),
+fAliceRunQuality(tag.fAliceRunQuality),
+fAliceBeamEnergy(tag.fAliceBeamEnergy),
+fAliceBeamType(tag.fAliceBeamType),
+fAliceCalibrationVersion(tag.fAliceCalibrationVersion),
+fAliceDataType(tag.fAliceDataType),
+fNumEvents(tag.fNumEvents),
+fNumDetectors(tag.fNumDetectors),
+fEventTag(tag.fEventTag),
+fDetectorTag(tag.fDetectorTag),
+fLHCTag(tag.fLHCTag), 
+fQA(tag.fQA),
+fQALength(tag.fQALength),
+fQAArray(NULL), 
+fESLength(tag.fESLength),
+fEventSpecies(NULL)
+{
+  //copy constructor
+  if (fQALength == 0 ) 
+    fQAArray = NULL ; 
+  else {
+    fQAArray = new ULong_t[fQALength] ; 
+    memcpy(fQAArray, tag.fQAArray, fQALength*sizeof(ULong_t)) ;
+  }
+  if (fESLength == 0 ) 
+    fEventSpecies = NULL ; 
+  else {
+    fEventSpecies = new Bool_t[fESLength] ; 
+    memcpy(fEventSpecies, tag.fEventSpecies, fESLength*sizeof(Bool_t)) ;
+  }
+}
+
+//___________________________________________________________________________
+AliRunTag& AliRunTag::operator = (const AliRunTag& tag) {
+//assignment operator
+  if(&tag != this) {
+    fAliceRunId               = tag.fAliceRunId ; 
+    fAliceMagneticField       = tag.fAliceMagneticField ;
+    fAliceRunStartTime        = tag.fAliceRunStartTime ; 
+    fAliceRunStopTime         = tag.fAliceRunStopTime ; 
+    fAlirootVersion           = tag.fAlirootVersion ; 
+    fRootVersion              = tag.fRootVersion ;
+    fGeant3Version            = tag.fGeant3Version ; 
+    fAliceRunQuality          = tag.fAliceRunQuality ; 
+    fAliceBeamEnergy          = tag.fAliceBeamEnergy ;
+    fAliceBeamType            = tag.fAliceBeamType ; 
+    fAliceCalibrationVersion  = tag.fAliceCalibrationVersion ; 
+    fAliceDataType            = tag.fAliceDataType ; 
+    fNumEvents                = tag.fNumEvents ;
+    fNumDetectors             = tag.fNumDetectors ; 
+    fEventTag                 = tag.fEventTag ;
+    fDetectorTag              = tag.fDetectorTag ;
+    fLHCTag                   = tag.fLHCTag ;  
+    fQA                       = tag.fQA ;      
+    fQALength                 = tag.fQALength ; 
+    if (fQAArray) 
+      delete [] fQAArray ; 
+    if (fQALength == 0 ) 
+      fQAArray = NULL ; 
+    else {
+      fQAArray = new ULong_t[fQALength] ; 
+      memcpy(fQAArray, tag.fQAArray, fQALength*sizeof(ULong_t)) ;
+    }
+    fESLength                 = tag.fESLength ; 
+    if (fEventSpecies)
+      delete [] fEventSpecies ; 
+    if (fESLength == 0 ) 
+      fEventSpecies = NULL ; 
+    else {
+      fEventSpecies = new Bool_t[fESLength] ; 
+      memcpy(fEventSpecies, tag.fEventSpecies, fESLength*sizeof(Bool_t)) ;
+    }
+  }
+  return *this ; 
+}
+
+//___________________________________________________________________________
+void AliRunTag::CopyStandardContent(AliRunTag *oldtag) {
+  //function that copies the run, lhc and detector levels
+  SetRunId(oldtag->GetRunId());
+  SetMagneticField(oldtag->GetMagneticField());
+  SetRunStartTime(oldtag->GetRunStartTime());
+  SetRunStopTime(oldtag->GetRunStopTime());
+  SetAlirootVersion(oldtag->GetAlirootVersion());
+  SetRootVersion(oldtag->GetRootVersion());
+  SetGeant3Version(oldtag->GetGeant3Version());
+  SetRunQuality(oldtag->GetRunQuality());
+  SetBeamEnergy(oldtag->GetBeamEnergy());
+  SetBeamType(oldtag->GetBeamType());
+  SetCalibVersion(oldtag->GetCalibVersion());
+  SetDataType(oldtag->GetDataType());
+  SetLHCTag(oldtag->GetLHCTag()->GetLuminosity(),oldtag->GetLHCTag()->GetLHCState());
+  SetDetectorTag(oldtag->GetDetectorTags()->GetIntDetectorMask());
+  SetQA(*(oldtag->GetQA())) ;          
+  SetQAArray(oldtag->GetQAArray(), oldtag->GetQALength()) ;  
+       SetEventSpecies(oldtag->GetEventSpecies(), oldtag->GetESLength()) ;  
+}
+
+//___________________________________________________________________________
+void AliRunTag::SetQAArray(ULong_t * qa, Int_t qalength) {
+  //Setter for the qa bits 
+  if (qa && qalength > 0) {
+    fQALength = qalength ; 
+    if (fQAArray) 
+      delete [] fQAArray ; 
+    fQAArray = new ULong_t[qalength] ; 
+    memcpy(fQAArray, qa, qalength*sizeof(ULong_t)) ;
+  }
+}
+
+//___________________________________________________________________________
+void AliRunTag::SetEventSpecies(Bool_t * es, Int_t eslength) {
+  //setter for the eventspecices 
+  if (es && eslength >0 ) {
+    fESLength = eslength ; 
+    if (fEventSpecies) 
+      delete [] fEventSpecies ; 
+    fEventSpecies = new Bool_t[eslength] ;
+    memcpy(fEventSpecies, es, eslength*sizeof(Bool_t)) ; 
+  }
+}
+
+
+//___________________________________________________________________________
+void AliRunTag::SetLHCTag(Float_t lumin, TString type) {
   //Setter for the LHC tags
   fLHCTag.SetLHCTag(lumin,type);
 }
 
 //___________________________________________________________________________
-void AliRunTag::SetDetectorTag(const AliDetectorTag &DetTag) {
+void AliRunTag::SetDetectorTag(UInt_t mask) {
   //Setter for the detector tags
-  new(fDetectorTag[fNumDetectors++]) AliDetectorTag(DetTag);
+  fDetectorTag.SetDetectorMask(mask);
 }
 
 //___________________________________________________________________________
@@ -79,7 +219,7 @@ void AliRunTag::AddEventTag(const AliEventTag & EvTag) {
 //___________________________________________________________________________
 void AliRunTag::Clear(const char *) {
   //Resets the number of events and detectors
-  fEventTag.Clear();
+  fEventTag.Delete();
   fNumEvents = 0;
   fDetectorTag.Clear();
   fNumDetectors = 0;