]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDriftSpeedArraySDD.cxx
Changing once more (hopefully we get it correct this time...) the logic to trig the...
[u/mrichter/AliRoot.git] / ITS / AliITSDriftSpeedArraySDD.cxx
index 6e9264049a272aa9d8e483e3e355917b59b124ec..9ea9ef08d2f2b9e7f5ba4b447cf343e5461edb45 100644 (file)
@@ -22,7 +22,6 @@
 //                                                               //
 ///////////////////////////////////////////////////////////////////
 
-#include <TClonesArray.h>
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
 #include "AliLog.h"
@@ -32,66 +31,50 @@ ClassImp(AliITSDriftSpeedArraySDD)
 AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD():
 TObject(),
 fNEvents(0),
-fDriftSpeedSDD(0){
+fDriftSpeedSDD(10),
+fInjectorStatus(0x3E000000){
   // default constructor
-  fDriftSpeedSDD=new TClonesArray("AliITSDriftSpeedSDD",100);
 }
 //______________________________________________________________________
 AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv):
 TObject(),
 fNEvents(0),
-fDriftSpeedSDD(0){
+fDriftSpeedSDD(numEv),
+fInjectorStatus(0x3E000000){
   // standard constructor
-  fDriftSpeedSDD=new TClonesArray("AliITSDriftSpeedSDD",numEv);
-}
-//______________________________________________________________________
-AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(const AliITSDriftSpeedArraySDD& array):
-TObject(),
-fNEvents(array.fNEvents),
-fDriftSpeedSDD(array.fDriftSpeedSDD){
-  // copy constructor
-}
-//______________________________________________________________________
-AliITSDriftSpeedArraySDD& AliITSDriftSpeedArraySDD::operator=(const AliITSDriftSpeedArraySDD& array){
-  // assignment operator
-  this->~AliITSDriftSpeedArraySDD();
-  new(this) AliITSDriftSpeedArraySDD(array);
-  return *this;
-}
-
-//______________________________________________________________________
-AliITSDriftSpeedArraySDD::~AliITSDriftSpeedArraySDD(){
-  // destructor
-  if(fDriftSpeedSDD){
-    fDriftSpeedSDD->Delete();
-    delete fDriftSpeedSDD;
-  }
 }
 //______________________________________________________________________
 void AliITSDriftSpeedArraySDD::AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed){
   // adds an AliITSDriftSpeedSDD object in the array
-  TClonesArray &arr = *fDriftSpeedSDD;
-  new(arr[fNEvents]) AliITSDriftSpeedSDD(*drSpeed);
+  fDriftSpeedSDD.AddLast(drSpeed);
   fNEvents++;
-  
 }
 //______________________________________________________________________
 void AliITSDriftSpeedArraySDD::PrintAll() const{
   // print drift speed parameters for all elements in the array
-  printf("Array Size=%d\n",fDriftSpeedSDD->GetSize());
+  printf("Array Size=%d\n",fDriftSpeedSDD.GetSize());
   printf("Array Elements =%d\n",fNEvents);
+  printf("Injector Status =%d\n",fInjectorStatus);
   for(Int_t i=0;i<fNEvents; i++){
     printf("     ====== Array el. #%d ======\n",i);
-    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD->At(i);
+    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
     if(d) d->PrintDriftSpeedParameters();
   }
 }
 //______________________________________________________________________
-Float_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Float_t iAnode) const{
+UInt_t AliITSDriftSpeedArraySDD::GetTimestamp(Int_t iElement){
+  // returns time stamp
+  if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
+  if(fNEvents<iElement) return 0;
+  AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(iElement);
+  return d->GetEventTimestamp();
+}
+//______________________________________________________________________
+Double_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Double_t iAnode){
   // returns drift speed for given event number and anode
-  if(!fDriftSpeedSDD->IsSorted()) fDriftSpeedSDD->Sort();
+  if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
   if(fNEvents==1){
-    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD->At(0);
+    AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(0);
     return d->GetDriftSpeedAtAnode(iAnode);
   }else{
     Int_t nInjEv1=-1;
@@ -100,21 +83,21 @@ Float_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Float_t iAnode) co
     AliITSDriftSpeedSDD *d2=NULL;
     for(Int_t i=0;i<fNEvents; i++){
       d1=d2;
-      d2=(AliITSDriftSpeedSDD*)fDriftSpeedSDD->At(i);
+      d2=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
       nInjEv1=nInjEv2;
       if(d2!=0){
        nInjEv2=d2->GetEventNumber();
        if(nInjEv2>=iEvent){
-         if(i==0) d1=(AliITSDriftSpeedSDD*)fDriftSpeedSDD->At(i+1);
+         if(i==0) d1=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i+1);
          nInjEv1=d1->GetEventNumber();
          break;
        }
       }
     }
     if(nInjEv1>=0 && nInjEv2>=0 && nInjEv1!=nInjEv2){
-      Float_t v1=d1->GetDriftSpeedAtAnode(iAnode);
-      Float_t v2=d2->GetDriftSpeedAtAnode(iAnode);
-      Float_t vdrift=(v2-v1)*(iEvent-nInjEv1)/(nInjEv2-nInjEv1)+v1;
+      Double_t v1=d1->GetDriftSpeedAtAnode(iAnode);
+      Double_t v2=d2->GetDriftSpeedAtAnode(iAnode);
+      Double_t vdrift=(v2-v1)*(iEvent-nInjEv1)/(nInjEv2-nInjEv1)+v1;
       return vdrift;
     }
   }