Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TRD / AliTRDdEdxReconUtils.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, 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 //
17 //
18 //  Xianguo Lu 
19 //  lu@physi.uni-heidelberg.de
20 //  Xianguo.Lu@cern.ch
21 //
22 /*
23 grep " AliTRDdEdxReconUtils::" AliTRDdEdxReconUtils.cxx | grep "=" -v  | grep -v "[6]" | grep -v printf  |wc
24 grep "(" AliTRDdEdxReconUtils.h | grep ";" | grep -v grep | grep -v ClassDef | grep -v "{" | grep -v typedef | wc
25 */
26
27
28 #ifndef ALITRDDEDXRECONUTILS_H
29 #define ALITRDDEDXRECONUTILS_H
30
31 #ifndef TVECTORD_H
32 #include "TVectorD.h"
33 #endif
34
35 #ifndef THNSPARSE_H
36 #include "THnBase.h"
37 #endif
38
39 #ifndef TTREESTREAM_H
40 #include "TTreeStream.h"
41 #endif 
42
43 class TH1D;
44 class TH2D;
45 class TObjArray;
46
47 class AliESDEvent;
48 class AliESDtrack;
49 class AliTRDcluster;
50 class AliTRDtrackV1;
51 class AliTRDseedV1;
52
53 class AliTRDdEdxReconUtils
54 {
55  public:
56
57
58   static Int_t ApplyCalib(const Int_t nc0, TVectorD *arrayQ, TVectorD *arrayX, const TObjArray *cobj);
59   static Double_t ToyCook(const Bool_t kinvq, Int_t &ncluster, TVectorD *arrayQ, TVectorD *arrayX, const TObjArray *cobj=0x0);
60   static Double_t CombineddEdx(const Bool_t kinvq, Int_t &concls, TVectorD *coarrayQ, TVectorD *coarrayX, const Int_t tpcncls, const TVectorD *tpcarrayQ, const TVectorD *tpcarrayX, const Int_t trdncls, const TVectorD *trdarrayQ, const TVectorD *trdarrayX);
61   static Int_t GetArrayClusterQ(const Bool_t kinvq, TVectorD *arrayQ, TVectorD *arrayX, const AliTRDtrackV1 *trdtrack, Int_t timeBin0=-1, Int_t timeBin1=1000, Int_t tstep=1);
62   static Int_t UpdateArrayX(const Int_t ncls, TVectorD* arrayX);
63
64  private:
65   static Double_t GetPadGain(const Int_t det, const Int_t icol, const Int_t irow);
66   static Double_t GetRNDClusterQ(AliTRDcluster *cl, const Double_t baseline);
67   static Double_t GetClusterQ(const Bool_t kinvq, const AliTRDseedV1 * seed, const Int_t itb);
68
69 };
70
71 #endif