Pointer to a TClonesArray changed to a TObjArray. fDriftSpeedParam changed to a Doubl...
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 Apr 2008 17:27:28 +0000 (17:27 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 Apr 2008 17:27:28 +0000 (17:27 +0000)
ITS/AliITSDriftSpeedArraySDD.cxx
ITS/AliITSDriftSpeedArraySDD.h
ITS/AliITSDriftSpeedSDD.cxx
ITS/AliITSDriftSpeedSDD.h
ITS/AliITSPreprocessorSDD.cxx
ITS/Calib/DriftSpeedSDD/Run0_9999999_v0_s0.root
ITS/StoreDriftSpeedSDD.C

index 6e92640..750be6a 100644 (file)
@@ -22,7 +22,6 @@
 //                                                               //
 ///////////////////////////////////////////////////////////////////
 
-#include <TClonesArray.h>
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
 #include "AliLog.h"
@@ -32,66 +31,41 @@ ClassImp(AliITSDriftSpeedArraySDD)
 AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD():
 TObject(),
 fNEvents(0),
-fDriftSpeedSDD(0){
+fDriftSpeedSDD(){
   // default constructor
-  fDriftSpeedSDD=new TClonesArray("AliITSDriftSpeedSDD",100);
+  fDriftSpeedSDD.Expand(10);
 }
 //______________________________________________________________________
 AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv):
 TObject(),
 fNEvents(0),
-fDriftSpeedSDD(0){
+fDriftSpeedSDD(){
   // 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;
-  }
+  fDriftSpeedSDD.Expand(numEv);
 }
 //______________________________________________________________________
 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);
   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{
+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 +74,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;
     }
   }
index 21dd89f..6ac5b2a 100644 (file)
@@ -7,14 +7,14 @@
 
 ///////////////////////////////////////////////////////////////////
 //                                                               //
-// Class for a TClonesArray of the AliITSDriftSpeedSDD objects   //
+// Class for a TOnjArray of the AliITSDriftSpeedSDD objects      //
 // from 1 run (1 AliITSDriftSpeedSDD for  each injector trigger  //
 // Origin: F.Prino, Torino, prino@to.infn.it                     //
 //                                                               //
 ///////////////////////////////////////////////////////////////////
 
 #include<TObject.h>
-#include<TClonesArray.h>
+#include<TObjArray.h>
 
 class AliITSDriftSpeedSDD;
 
@@ -23,18 +23,16 @@ class AliITSDriftSpeedArraySDD : public TObject{
  public:
   AliITSDriftSpeedArraySDD();
   AliITSDriftSpeedArraySDD(Int_t numEv);
-  AliITSDriftSpeedArraySDD(const AliITSDriftSpeedArraySDD& array);
-  AliITSDriftSpeedArraySDD& operator=(const AliITSDriftSpeedArraySDD& array);
-  virtual ~AliITSDriftSpeedArraySDD();
+  virtual ~AliITSDriftSpeedArraySDD() {};
 
   void AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed);
 
   void PrintAll() const;
-  Float_t GetDriftSpeed(Int_t iEvent, Float_t iAnode) const;
+  Double_t GetDriftSpeed(Int_t iEvent, Double_t iAnode);
 
  protected:  
   Int_t fNEvents;               // number of drift speed determination
-  TClonesArray *fDriftSpeedSDD; // array of AliITSDriftSpeedSDD objects
-  ClassDef(AliITSDriftSpeedArraySDD,1);
+  TObjArray fDriftSpeedSDD; // array of AliITSDriftSpeedSDD objects
+  ClassDef(AliITSDriftSpeedArraySDD,2);
 };
 #endif
index a434d64..680febc 100644 (file)
@@ -38,7 +38,7 @@ fPolDeg(0){
   for(Int_t i=1; i<fgkMaxPolDeg+1; i++) fDriftSpeedParam[i]=0;
 }
 //______________________________________________________________________
-AliITSDriftSpeedSDD::AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Float_t *coeff):
+AliITSDriftSpeedSDD::AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Double_t *coeff):
 TObject(),
 fEvNum(ev),
 fTimestamp(timest),
index ab15154..79695cd 100644 (file)
@@ -20,7 +20,7 @@
 class AliITSDriftSpeedSDD : public TObject {
  public:
   AliITSDriftSpeedSDD();
-  AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Float_t *coeff);
+  AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Double_t *coeff);
   AliITSDriftSpeedSDD(const AliITSDriftSpeedSDD& drSpeed);
   virtual ~AliITSDriftSpeedSDD(){};
 
@@ -36,10 +36,10 @@ class AliITSDriftSpeedSDD : public TObject {
 
   Int_t GetEventNumber() const {return fEvNum;}
   UInt_t GetEventTimestamp() const {return fTimestamp;}
-  Float_t GetDriftSpeedParameter(Int_t i) const {return fDriftSpeedParam[i];}
-  Float_t GetDriftSpeedAtAnode(Float_t nAnode) const{
-    Float_t drSpeed=0;
-    for(Int_t i=0; i<fgkMaxPolDeg+1; i++) drSpeed+=fDriftSpeedParam[i]*TMath::Power(nAnode,i);
+  Double_t GetDriftSpeedParameter(Int_t i) const {return fDriftSpeedParam[i];}
+  Double_t GetDriftSpeedAtAnode(Double_t nAnode) const{
+    Double_t drSpeed=fDriftSpeedParam[fgkMaxPolDeg];
+    for(Int_t i=fgkMaxPolDeg-1; i>=0; --i) drSpeed=fDriftSpeedParam[i]+nAnode*drSpeed;
     return drSpeed;
   }
 
@@ -48,7 +48,7 @@ class AliITSDriftSpeedSDD : public TObject {
   Int_t fEvNum;  // event number of injector event
   UInt_t fTimestamp; // event timestamp
   Int_t fPolDeg;    // degree of the ploy fit to drift speed vs. anode
-  Float_t fDriftSpeedParam[fgkMaxPolDeg+1];  // coefficients of the poly fit
-  ClassDef(AliITSDriftSpeedSDD,1);
+  Double32_t fDriftSpeedParam[fgkMaxPolDeg+1];  // coefficients of the poly fit
+  ClassDef(AliITSDriftSpeedSDD,2);
 };
 #endif
index 437b953..9bf46bd 100644 (file)
@@ -181,7 +181,7 @@ UInt_t AliITSPreprocessorSDD::ProcessInjector(AliITSDDLModuleMapSDD* ddlmap){
   Char_t inpFileName[100];
   Int_t evNumb,polDeg; 
   UInt_t timeStamp;
-  Float_t param[4];
+  Double_t param[4];
 
   TList* sourceList = GetFileSources(kDAQ, "SDD_Injec");
   if (!sourceList){ 
index 63bd792..0b25bca 100644 (file)
Binary files a/ITS/Calib/DriftSpeedSDD/Run0_9999999_v0_s0.root and b/ITS/Calib/DriftSpeedSDD/Run0_9999999_v0_s0.root differ
index d22c734..3ab8201 100644 (file)
@@ -38,9 +38,9 @@ void StoreDriftSpeedSDD(Int_t firstRun=0,Int_t lastRun=9999999 ){
 
 
 
-  Float_t drVelParam[4]={7.75,0.002344,-0.000009,0};
-  Float_t edrVelParam[4]={0.1,0,0,0};
-  Float_t drVel[4];
+  Double_t drVelParam[4]={7.75,0.002344,-0.000009,0};
+  Double_t edrVelParam[4]={0.1,0,0,0};
+  Double_t drVel[4];
   TRandom3 *gran = new TRandom3();
   
   for(Int_t mod=0;mod<260;mod++){