]>
Commit | Line | Data |
---|---|---|
18da6e54 | 1 | #ifndef ALIITSDRIFTSPEEDSDD_H |
2 | #define ALIITSDRIFTSPEEDSDD_H | |
3 | /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | /////////////////////////////////////////////////////////////////// | |
9 | // // | |
10 | // Class for SDD drift speed extracted from injector triggers // | |
11 | // drift speed dependence on anode number is parametrized via // | |
12 | // a polynomial function (3rd degree by default, max. 5th degree)// | |
13 | // Origin: F.Prino, Torino, prino@to.infn.it // | |
14 | // // | |
15 | /////////////////////////////////////////////////////////////////// | |
16 | ||
17 | #include<TObject.h> | |
18 | #include<TMath.h> | |
19 | ||
20 | class AliITSDriftSpeedSDD : public TObject { | |
21 | public: | |
22 | AliITSDriftSpeedSDD(); | |
4c1bcb5e | 23 | AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Double_t *coeff); |
18da6e54 | 24 | AliITSDriftSpeedSDD(const AliITSDriftSpeedSDD& drSpeed); |
accb90b5 | 25 | AliITSDriftSpeedSDD& operator=(const AliITSDriftSpeedSDD& drSpeed); |
18da6e54 | 26 | virtual ~AliITSDriftSpeedSDD(){}; |
27 | ||
253e68a0 | 28 | static Float_t DefaultDriftSpeed() {return fgkDriftSpeedDefault;} |
18da6e54 | 29 | virtual Bool_t IsEqual(const TObject *obj) const |
30 | {return fEvNum == ((AliITSDriftSpeedSDD*)obj)->fEvNum;} | |
31 | virtual Bool_t IsSortable() const { return kTRUE; } | |
32 | virtual Int_t Compare(const TObject *obj) const | |
33 | {if(fEvNum<((AliITSDriftSpeedSDD*)obj)->fEvNum) return -1; | |
34 | else if(fEvNum>((AliITSDriftSpeedSDD*)obj)->fEvNum) return 1; | |
35 | else return 0; } | |
36 | ||
37 | void PrintDriftSpeedParameters() const; | |
f89e83c1 | 38 | void SetDegreeofPoly(Int_t deg) {fPolDeg = deg>fgkMaxPolDeg ? fgkMaxPolDeg : deg;} |
915c0469 | 39 | Int_t GetDegreeofPoly() const {return fPolDeg;} |
18da6e54 | 40 | Int_t GetEventNumber() const {return fEvNum;} |
41 | UInt_t GetEventTimestamp() const {return fTimestamp;} | |
ab516493 | 42 | Float_t GetDriftSpeedParameter(Int_t i) const {return fDriftSpeedParam[i];} |
f89e83c1 | 43 | void SetDriftSpeedParameter(Int_t i,Float_t par) {if (i<=fPolDeg) fDriftSpeedParam[i] = par;} |
4c1bcb5e | 44 | Double_t GetDriftSpeedAtAnode(Double_t nAnode) const{ |
45 | Double_t drSpeed=fDriftSpeedParam[fgkMaxPolDeg]; | |
46 | for(Int_t i=fgkMaxPolDeg-1; i>=0; --i) drSpeed=fDriftSpeedParam[i]+nAnode*drSpeed; | |
18da6e54 | 47 | return drSpeed; |
48 | } | |
7a8c5708 | 49 | static UShort_t GetMaxPolDeg() {return fgkMaxPolDeg;} |
18da6e54 | 50 | |
51 | protected: | |
253e68a0 | 52 | static const Float_t fgkDriftSpeedDefault; // default for drift speed |
ab516493 | 53 | static const UShort_t fgkMaxPolDeg=5; // max. degree of the poly fit |
253e68a0 | 54 | |
18da6e54 | 55 | Int_t fEvNum; // event number of injector event |
56 | UInt_t fTimestamp; // event timestamp | |
ab516493 | 57 | Char_t fPolDeg; // degree of the ploy fit to drift speed vs. anode |
58 | // saved as char since 1 byte is enough | |
59 | Float_t fDriftSpeedParam[fgkMaxPolDeg+1]; // coefficients of the poly fit | |
253e68a0 | 60 | ClassDef(AliITSDriftSpeedSDD,4); |
18da6e54 | 61 | }; |
62 | #endif |