ROOT logo
#ifndef ALIITSDRIFTSPEEDSDD_H
#define ALIITSDRIFTSPEEDSDD_H
/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Class for SDD drift speed extracted from injector triggers    //
// drift speed dependence on anode number is parametrized via    //
// a polynomial function (3rd degree by default, max. 5th degree)//
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include<TObject.h>
#include<TMath.h>

class AliITSDriftSpeedSDD : public TObject {
 public:
  AliITSDriftSpeedSDD();
  AliITSDriftSpeedSDD(Int_t ev, UInt_t timest, Int_t deg, Double_t *coeff);
  AliITSDriftSpeedSDD(const AliITSDriftSpeedSDD& drSpeed);
  AliITSDriftSpeedSDD& operator=(const AliITSDriftSpeedSDD& drSpeed); 
  virtual ~AliITSDriftSpeedSDD(){};

  static Float_t DefaultDriftSpeed() {return fgkDriftSpeedDefault;}
  virtual Bool_t IsEqual(const TObject *obj) const 
    {return fEvNum == ((AliITSDriftSpeedSDD*)obj)->fEvNum;}
  virtual Bool_t      IsSortable() const { return kTRUE; }
  virtual Int_t       Compare(const TObject *obj) const 
    {if(fEvNum<((AliITSDriftSpeedSDD*)obj)->fEvNum) return -1;
    else if(fEvNum>((AliITSDriftSpeedSDD*)obj)->fEvNum) return 1;
    else return 0; }

  void PrintDriftSpeedParameters() const;
  void SetDegreeofPoly(Int_t deg) {fPolDeg = deg>fgkMaxPolDeg ? fgkMaxPolDeg : deg;}
  Int_t GetDegreeofPoly() const {return fPolDeg;}
  Int_t GetEventNumber() const {return fEvNum;}
  UInt_t GetEventTimestamp() const {return fTimestamp;}
  Float_t GetDriftSpeedParameter(Int_t i) const {return fDriftSpeedParam[i];}
  void    SetDriftSpeedParameter(Int_t i,Float_t par)  {if (i<=fPolDeg) fDriftSpeedParam[i] = par;}
  Double_t GetDriftSpeedAtAnode(Double_t nAnode) const{
    Double_t drSpeed=fDriftSpeedParam[fgkMaxPolDeg];
    for(Int_t i=fgkMaxPolDeg-1; i>=0; --i) drSpeed=fDriftSpeedParam[i]+nAnode*drSpeed;
    return drSpeed;
  }
  static UShort_t GetMaxPolDeg() {return fgkMaxPolDeg;}

 protected:
  static const Float_t fgkDriftSpeedDefault; // default for drift speed
  static const UShort_t fgkMaxPolDeg=5; // max. degree of the poly fit

  Int_t fEvNum;  // event number of injector event
  UInt_t fTimestamp; // event timestamp
  Char_t fPolDeg;    // degree of the ploy fit to drift speed vs. anode
                     // saved as char since 1 byte is enough
  Float_t fDriftSpeedParam[fgkMaxPolDeg+1];  // coefficients of the poly fit
  ClassDef(AliITSDriftSpeedSDD,4);
};
#endif
 AliITSDriftSpeedSDD.h:1
 AliITSDriftSpeedSDD.h:2
 AliITSDriftSpeedSDD.h:3
 AliITSDriftSpeedSDD.h:4
 AliITSDriftSpeedSDD.h:5
 AliITSDriftSpeedSDD.h:6
 AliITSDriftSpeedSDD.h:7
 AliITSDriftSpeedSDD.h:8
 AliITSDriftSpeedSDD.h:9
 AliITSDriftSpeedSDD.h:10
 AliITSDriftSpeedSDD.h:11
 AliITSDriftSpeedSDD.h:12
 AliITSDriftSpeedSDD.h:13
 AliITSDriftSpeedSDD.h:14
 AliITSDriftSpeedSDD.h:15
 AliITSDriftSpeedSDD.h:16
 AliITSDriftSpeedSDD.h:17
 AliITSDriftSpeedSDD.h:18
 AliITSDriftSpeedSDD.h:19
 AliITSDriftSpeedSDD.h:20
 AliITSDriftSpeedSDD.h:21
 AliITSDriftSpeedSDD.h:22
 AliITSDriftSpeedSDD.h:23
 AliITSDriftSpeedSDD.h:24
 AliITSDriftSpeedSDD.h:25
 AliITSDriftSpeedSDD.h:26
 AliITSDriftSpeedSDD.h:27
 AliITSDriftSpeedSDD.h:28
 AliITSDriftSpeedSDD.h:29
 AliITSDriftSpeedSDD.h:30
 AliITSDriftSpeedSDD.h:31
 AliITSDriftSpeedSDD.h:32
 AliITSDriftSpeedSDD.h:33
 AliITSDriftSpeedSDD.h:34
 AliITSDriftSpeedSDD.h:35
 AliITSDriftSpeedSDD.h:36
 AliITSDriftSpeedSDD.h:37
 AliITSDriftSpeedSDD.h:38
 AliITSDriftSpeedSDD.h:39
 AliITSDriftSpeedSDD.h:40
 AliITSDriftSpeedSDD.h:41
 AliITSDriftSpeedSDD.h:42
 AliITSDriftSpeedSDD.h:43
 AliITSDriftSpeedSDD.h:44
 AliITSDriftSpeedSDD.h:45
 AliITSDriftSpeedSDD.h:46
 AliITSDriftSpeedSDD.h:47
 AliITSDriftSpeedSDD.h:48
 AliITSDriftSpeedSDD.h:49
 AliITSDriftSpeedSDD.h:50
 AliITSDriftSpeedSDD.h:51
 AliITSDriftSpeedSDD.h:52
 AliITSDriftSpeedSDD.h:53
 AliITSDriftSpeedSDD.h:54
 AliITSDriftSpeedSDD.h:55
 AliITSDriftSpeedSDD.h:56
 AliITSDriftSpeedSDD.h:57
 AliITSDriftSpeedSDD.h:58
 AliITSDriftSpeedSDD.h:59
 AliITSDriftSpeedSDD.h:60
 AliITSDriftSpeedSDD.h:61
 AliITSDriftSpeedSDD.h:62