]>
Commit | Line | Data |
---|---|---|
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 | ||
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), | |
34 | fDriftSpeedSDD(10), | |
35 | fInjectorStatus(0x3E000000){ | |
36 | // default constructor | |
37 | } | |
38 | //______________________________________________________________________ | |
39 | AliITSDriftSpeedArraySDD::AliITSDriftSpeedArraySDD(Int_t numEv): | |
40 | TObject(), | |
41 | fNEvents(0), | |
42 | fDriftSpeedSDD(numEv), | |
43 | fInjectorStatus(0x3E000000){ | |
44 | // standard constructor | |
45 | } | |
46 | //______________________________________________________________________ | |
47 | void AliITSDriftSpeedArraySDD::AddDriftSpeed(AliITSDriftSpeedSDD* drSpeed){ | |
48 | // adds an AliITSDriftSpeedSDD object in the array | |
49 | fDriftSpeedSDD.AddLast(drSpeed); | |
50 | fNEvents++; | |
51 | } | |
52 | //______________________________________________________________________ | |
53 | void AliITSDriftSpeedArraySDD::PrintAll() const{ | |
54 | // print drift speed parameters for all elements in the array | |
55 | printf("Array Size=%d\n",fDriftSpeedSDD.GetSize()); | |
56 | printf("Array Elements =%d\n",fNEvents); | |
57 | printf("Injector Status =%d\n",fInjectorStatus); | |
58 | for(Int_t i=0;i<fNEvents; i++){ | |
59 | printf(" ====== Array el. #%d ======\n",i); | |
60 | AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i); | |
61 | if(d) d->PrintDriftSpeedParameters(); | |
62 | } | |
63 | } | |
64 | //______________________________________________________________________ | |
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 | //______________________________________________________________________ | |
73 | Double_t AliITSDriftSpeedArraySDD::GetDriftSpeed(Int_t iEvent, Double_t iAnode){ | |
74 | // returns drift speed for given event number and anode | |
75 | if(!fDriftSpeedSDD.IsSorted()) fDriftSpeedSDD.Sort(); | |
76 | if(fNEvents==1){ | |
77 | AliITSDriftSpeedSDD *d=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(0); | |
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; | |
86 | d2=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i); | |
87 | nInjEv1=nInjEv2; | |
88 | if(d2!=0){ | |
89 | nInjEv2=d2->GetEventNumber(); | |
90 | if(nInjEv2>=iEvent){ | |
91 | if(i==0) d1=(AliITSDriftSpeedSDD*)fDriftSpeedSDD.At(i+1); | |
92 | nInjEv1=d1->GetEventNumber(); | |
93 | break; | |
94 | } | |
95 | } | |
96 | } | |
97 | if(nInjEv1>=0 && nInjEv2>=0 && nInjEv1!=nInjEv2){ | |
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; | |
101 | return vdrift; | |
102 | } | |
103 | } | |
104 | AliWarning("Vdrift interpolation error\n"); | |
105 | return -999.; | |
106 | } |