]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSDriftSpeedArraySDD.cxx
Updates for pile-up vertex (F. Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSDriftSpeedArraySDD.cxx
CommitLineData
18da6e54 1/**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18///////////////////////////////////////////////////////////////////
19// //
20// Implementation of the class with array of AliITSDriftSpeedSDD //
21// Origin: F.Prino, Torino, prino@to.infn.it //
22// //
23///////////////////////////////////////////////////////////////////
24
18da6e54 25#include "AliITSDriftSpeedArraySDD.h"
26#include "AliITSDriftSpeedSDD.h"
27#include "AliLog.h"
28
29ClassImp(AliITSDriftSpeedArraySDD)
30//______________________________________________________________________
31AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD():
32TObject(),
33fNEvents(0),
50d25e98 34fDriftSpeedSDD(10),
35fInjectorStatus(0x3E000000){
18da6e54 36 // default constructor
18da6e54 37}
38//______________________________________________________________________
39AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv):
40TObject(),
41fNEvents(0),
50d25e98 42fDriftSpeedSDD(numEv),
43fInjectorStatus(0x3E000000){
18da6e54 44 // standard constructor
18da6e54 45}
46//______________________________________________________________________
47void AliITSDriftSpeedArraySDD::AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed){
48 // adds an AliITSDriftSpeedSDD object in the array
4c1bcb5e 49 fDriftSpeedSDD.AddLast(drSpeed);
18da6e54 50 fNEvents++;
18da6e54 51}
52//______________________________________________________________________
53void AliITSDriftSpeedArraySDD::PrintAll() const{
54 // print drift speed parameters for all elements in the array
4c1bcb5e 55 printf("Array Size=%d\n",fDriftSpeedSDD.GetSize());
18da6e54 56 printf("Array Elements =%d\n",fNEvents);
50d25e98 57 printf("Injector Status =%d\n",fInjectorStatus);
18da6e54 58 for(Int_t i=0;i<fNEvents; i++){
59 printf(" ====== Array el. #%d ======\n",i);
4c1bcb5e 60 AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
18da6e54 61 if(d) d->PrintDriftSpeedParameters();
62 }
63}
64//______________________________________________________________________
5990cdfe 65UInt_t AliITSDriftSpeedArraySDD::GetTimestamp(Int_t iElement){
66 // returns time stamp
67 if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
68 if(fNEvents<iElement) return 0;
69 AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(iElement);
70 return d->GetEventTimestamp();
71}
72//______________________________________________________________________
4c1bcb5e 73Double_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Double_t iAnode){
18da6e54 74 // returns drift speed for given event number and anode
4c1bcb5e 75 if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort();
18da6e54 76 if(fNEvents==1){
4c1bcb5e 77 AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(0);
18da6e54 78 return d->GetDriftSpeedAtAnode(iAnode);
79 }else{
80 Int_t nInjEv1=-1;
81 Int_t nInjEv2=-1;
82 AliITSDriftSpeedSDD *d1=NULL;
83 AliITSDriftSpeedSDD *d2=NULL;
84 for(Int_t i=0;i<fNEvents; i++){
85 d1=d2;
4c1bcb5e 86 d2=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i);
18da6e54 87 nInjEv1=nInjEv2;
88 if(d2!=0){
89 nInjEv2=d2->GetEventNumber();
90 if(nInjEv2>=iEvent){
4c1bcb5e 91 if(i==0) d1=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i+1);
18da6e54 92 nInjEv1=d1->GetEventNumber();
93 break;
94 }
95 }
96 }
97 if(nInjEv1>=0 && nInjEv2>=0 && nInjEv1!=nInjEv2){
4c1bcb5e 98 Double_t v1=d1->GetDriftSpeedAtAnode(iAnode);
99 Double_t v2=d2->GetDriftSpeedAtAnode(iAnode);
100 Double_t vdrift=(v2-v1)*(iEvent-nInjEv1)/(nInjEv2-nInjEv1)+v1;
18da6e54 101 return vdrift;
102 }
103 }
104 AliWarning("Vdrift interpolation error\n");
105 return -999.;
106}