Another histos for lumi
[u/mrichter/AliRoot.git] / ITS / AliITSDriftSpeedSDD.h
CommitLineData
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
20class 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