Array of records with 64 bit scalers added, copy constructor,=operator
authorlietava <lietava@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Jun 2009 16:32:43 +0000 (16:32 +0000)
committerlietava <lietava@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Jun 2009 16:32:43 +0000 (16:32 +0000)
STEER/AliTriggerRunScalers.cxx
STEER/AliTriggerRunScalers.h

index ae7a29223c351a764c04d214aad05fffcbc94b28..0940a438869d8455914b4164e00f2a01bbfecd3d 100644 (file)
@@ -51,7 +51,8 @@ AliTriggerRunScalers::AliTriggerRunScalers():
   fRunNumber(0),
   fnClasses(0),
   fClassIndex(),                    
-  fScalersRecord()
+  fScalersRecord(),
+  fScalersRecordESD()
 {
   // Default constructor
 }
@@ -64,7 +65,51 @@ void AliTriggerRunScalers::AddTriggerScalers( AliTriggerScalersRecord* scaler )
   if (!AliTriggerRunScalers::ConsistencyCheck()) AliErrorClass("Trigger counters not in the right order or decreasing!");
 //  fScalersRecord.Sort(); 
 }
+//_____________________________________________________________________________
+
+AliTriggerRunScalers::AliTriggerRunScalers(const AliTriggerRunScalers &run) :
+ TObject(),
+ fVersion(run.fVersion),
+ fRunNumber(run.fRunNumber),
+ fnClasses(run.fnClasses),
+ fClassIndex(),                    
+ fScalersRecord(),
+ fScalersRecordESD()
+{
+// copy constructor
+for (Int_t i = 0; i < run.fClassIndex.GetSize(); i++) {
+    if (run.fClassIndex[i]) fClassIndex.AddAt(run.fClassIndex[i], i);
+  }
+for (Int_t i = 0; i < run.fScalersRecord.GetEntriesFast(); i++) {
+    if (run.fScalersRecord[i]) fScalersRecord.Add(run.fScalersRecord[i]->Clone());
+  }
+for (Int_t i = 0; i < run.fScalersRecordESD.GetEntriesFast(); i++) {
+    if (run.fScalersRecordESD[i]) fScalersRecordESD.Add(run.fScalersRecordESD[i]->Clone());
+  }
+
+}
+//_____________________________________________________________________________
+AliTriggerRunScalers &AliTriggerRunScalers::operator=(const AliTriggerRunScalers& run)
+{
+// assignment operator
+if(&run == this) return *this;
+((TObject *)this)->operator=(run);
+
+fVersion = run.fVersion;
+fRunNumber = run.fRunNumber;
+fnClasses = run.fnClasses;
 
+for (Int_t i = 0; i < run.fClassIndex.GetSize(); i++) {
+    if (run.fClassIndex[i]) fClassIndex.AddAt(run.fClassIndex[i], i);
+  }
+for (Int_t i = 0; i < run.fScalersRecord.GetEntriesFast(); i++) {
+    if (run.fScalersRecord[i]) fScalersRecord.Add(run.fScalersRecord[i]->Clone());
+  }
+for (Int_t i = 0; i < run.fScalersRecordESD.GetEntriesFast(); i++) {
+    if (run.fScalersRecordESD[i]) fScalersRecordESD.Add(run.fScalersRecordESD[i]->Clone());
+  }
+return *this;
+} 
 //_____________________________________________________________________________
 AliTriggerRunScalers* AliTriggerRunScalers::ReadScalers( TString & filename )
 {
@@ -224,7 +269,7 @@ Int_t  AliTriggerRunScalers::FindNearestScalersRecord( const AliTimeStamp *stamp
     return (result < 0 ) ? position-1 : position; // nearst < stamp   
 }
 //_____________________________________________________________________________
-Bool_t AliTriggerRunScalers::ConsistencyCheck()
+Bool_t AliTriggerRunScalers::ConsistencyCheck() const
 {
    //Check if counters are consistent(increase). Example: lOCB(n) < lOCB(n+1) and lOCB > lOCA
    UInt_t lOCBtwo, lOCAtwo, l1CBtwo, l1CAtwo, l2CBtwo, l2CAtwo, lOCBone, lOCAone, l1CBone, l1CAone, l2CBone, l2CAone;
index d821037cf0021fa2b993b947ed67a1f498e29daf..76fa3f1269866773d05dddeb120b9cde20a3aee0 100644 (file)
@@ -33,7 +33,7 @@ public:
           const TObjArray*   GetScalersRecords()   const { return &fScalersRecord; } 
   AliTriggerScalersRecord*   GetScalersRecord( Int_t index ) const { return (AliTriggerScalersRecord*)fScalersRecord.At(index); }
                     Int_t    FindNearestScalersRecord( const AliTimeStamp *stamp ) const;
-                   Bool_t    ConsistencyCheck();
+                   Bool_t    ConsistencyCheck() const;
   //  Setters
                      void    SetVersion( Short_t ver )       { fVersion = ver;   }            
                      void    SetRunNumber( ULong_t run )     { fRunNumber = run; }
@@ -41,22 +41,22 @@ public:
                      void    SetClass( UChar_t i, UChar_t index ) { fClassIndex[i]=index; }
                      void    AddTriggerScalers( AliTriggerScalersRecord* scal );
              virtual void    Print( const Option_t* opt ="" ) const;
-
+     AliTriggerRunScalers( const AliTriggerRunScalers &run );
+     AliTriggerRunScalers&    operator=(const AliTriggerRunScalers& run);
                                         
 static AliTriggerRunScalers*  ReadScalers( TString & filename );
                                       
-
 private:
                   Short_t    fVersion;            // Version
                   ULong_t    fRunNumber;          // Run number
                   UChar_t    fnClasses;           // Number of trigger classes
                   TArrayC    fClassIndex;         // list of classes used in this partition
                 TObjArray    fScalersRecord;      // Array of records (AliTriggerScalersRecord)
+                TObjArray    fScalersRecordESD;   // Array of records with 64bit scalers (AliTriggerScalersRecordESD)
+
     
-                        //     AliTriggerRunScalers( const AliTriggerRunScalers &run );
-    AliTriggerRunScalers&    operator=(const AliTriggerRunScalers& run);
 
-   ClassDef( AliTriggerRunScalers, 1 )  // Define a Run Trigger Scalers (Scalers)
+   ClassDef( AliTriggerRunScalers, 2 )  // Define a Run Trigger Scalers (Scalers)
 };
 
 #endif