// //
///////////////////////////////////////////////////////////////////
-#include <TClonesArray.h>
#include "AliITSDriftSpeedArraySDD.h"
#include "AliITSDriftSpeedSDD.h"
#include "AliLog.h"
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;
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;
}
}