]>
Commit | Line | Data |
---|---|---|
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 | ||
29 | ClassImp(AliITSDriftSpeedArraySDD) | |
30 | //______________________________________________________________________ | |
31 | AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(): | |
32 | TObject(), | |
33 | fNEvents(0), | |
50d25e98 | 34 | fDriftSpeedSDD(10), |
35 | fInjectorStatus(0x3E000000){ | |
18da6e54 | 36 | // default constructor |
18da6e54 | 37 | } |
38 | //______________________________________________________________________ | |
39 | AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv): | |
40 | TObject(), | |
41 | fNEvents(0), | |
50d25e98 | 42 | fDriftSpeedSDD(numEv), |
43 | fInjectorStatus(0x3E000000){ | |
18da6e54 | 44 | // standard constructor |
18da6e54 | 45 | } |
46 | //______________________________________________________________________ | |
47 | void AliITSDriftSpeedArraySDD::AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed){ | |
48 | // adds an AliITSDriftSpeedSDD object in the array | |
4c1bcb5e | 49 | fDriftSpeedSDD.AddLast(drSpeed); |
18da6e54 | 50 | fNEvents++; |
18da6e54 | 51 | } |
52 | //______________________________________________________________________ | |
53 | void 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 | 65 | UInt_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 | 73 | Double_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 | } |