ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
//
//
//
//  Xianguo Lu 
//  lu@physi.uni-heidelberg.de
//  Xianguo.Lu@cern.ch
//
/*
grep " AliTRDdEdxCalibUtils::" AliTRDdEdxCalibUtils.cxx | grep "=" -v  | grep -v "[6]" | grep -v printf  |wc
grep "(" AliTRDdEdxCalibUtils.h | grep ";" | grep -v grep | grep -v ClassDef | grep -v "{" | grep -v typedef | wc
*/


#ifndef ALITRDDEDXCALIBUTILS_H
#define ALITRDDEDXCALIBUTILS_H

#ifndef TVECTORD_H
#include "TVectorD.h"
#endif

#ifndef THNSPARSE_H
#include "THnBase.h"
#endif

#ifndef TTREESTREAM_H
#include "TTreeStream.h"
#endif 

#ifndef ALITRDDEDXCALIBHISTARRAY_H
#include "AliTRDdEdxCalibHistArray.h"
#endif

class TH1D;
class TH2D;
class TObjArray;

class AliESDEvent;
class AliESDtrack;
class AliTRDcluster;
class AliTRDtrackV1;
class AliTRDseedV1;

class AliTRDdEdxCalibUtils
{
 public:

  static void SetObjArray(TObjArray * obj){fgObjArray = obj;}
  static TObjArray * GetObjArray();
  static TObjArray * GetObj(const Bool_t kinvq, const Double_t mag, const Int_t charge);
  static TObjArray* HistToObj(const THnBase *hh, Int_t run=-999, TList *lout=0x0, TTreeSRedirector *calibStream=0x0);
  static void DeleteObjArray();
  static Bool_t GenerateOCDB(const Int_t run=-1, const TString path="local://./");

  static AliTRDdEdxCalibHistArray * GetHistArray(){return fgHistArray;}
  static THnBase * GetHistAt(const Int_t iter);
  static void IniHistArray(TList *list, const Bool_t kNoInv);
  static Bool_t ReadHistArray(const TString filename, const TString listname);
  static void FillHist(const AliTRDtrackV1 *trdv1, const Bool_t kinvq, const Double_t mag, const Int_t charge, const Double_t scale) ;
  static void DeleteHistArray();

  static Double_t GetCalibTPCscale(const Int_t tpcncls, const Double_t tpcsig);
  
 private:
  static void FillHist(const Int_t ncls, const TVectorD *arrayQ, const TVectorD *arrayX, THnBase * hcalib, const Double_t scale);
  static void GetPHCountMeanRMS(const TH1D *hnor, TH1D *&hmean);

 
  static AliTRDdEdxCalibHistArray * fgHistArray;         //array containing 8 THnBase!
  static TObjArray * fgObjArray;                    //array containing 8 TObjArray!
 
};

#endif
 AliTRDdEdxCalibUtils.h:1
 AliTRDdEdxCalibUtils.h:2
 AliTRDdEdxCalibUtils.h:3
 AliTRDdEdxCalibUtils.h:4
 AliTRDdEdxCalibUtils.h:5
 AliTRDdEdxCalibUtils.h:6
 AliTRDdEdxCalibUtils.h:7
 AliTRDdEdxCalibUtils.h:8
 AliTRDdEdxCalibUtils.h:9
 AliTRDdEdxCalibUtils.h:10
 AliTRDdEdxCalibUtils.h:11
 AliTRDdEdxCalibUtils.h:12
 AliTRDdEdxCalibUtils.h:13
 AliTRDdEdxCalibUtils.h:14
 AliTRDdEdxCalibUtils.h:15
 AliTRDdEdxCalibUtils.h:16
 AliTRDdEdxCalibUtils.h:17
 AliTRDdEdxCalibUtils.h:18
 AliTRDdEdxCalibUtils.h:19
 AliTRDdEdxCalibUtils.h:20
 AliTRDdEdxCalibUtils.h:21
 AliTRDdEdxCalibUtils.h:22
 AliTRDdEdxCalibUtils.h:23
 AliTRDdEdxCalibUtils.h:24
 AliTRDdEdxCalibUtils.h:25
 AliTRDdEdxCalibUtils.h:26
 AliTRDdEdxCalibUtils.h:27
 AliTRDdEdxCalibUtils.h:28
 AliTRDdEdxCalibUtils.h:29
 AliTRDdEdxCalibUtils.h:30
 AliTRDdEdxCalibUtils.h:31
 AliTRDdEdxCalibUtils.h:32
 AliTRDdEdxCalibUtils.h:33
 AliTRDdEdxCalibUtils.h:34
 AliTRDdEdxCalibUtils.h:35
 AliTRDdEdxCalibUtils.h:36
 AliTRDdEdxCalibUtils.h:37
 AliTRDdEdxCalibUtils.h:38
 AliTRDdEdxCalibUtils.h:39
 AliTRDdEdxCalibUtils.h:40
 AliTRDdEdxCalibUtils.h:41
 AliTRDdEdxCalibUtils.h:42
 AliTRDdEdxCalibUtils.h:43
 AliTRDdEdxCalibUtils.h:44
 AliTRDdEdxCalibUtils.h:45
 AliTRDdEdxCalibUtils.h:46
 AliTRDdEdxCalibUtils.h:47
 AliTRDdEdxCalibUtils.h:48
 AliTRDdEdxCalibUtils.h:49
 AliTRDdEdxCalibUtils.h:50
 AliTRDdEdxCalibUtils.h:51
 AliTRDdEdxCalibUtils.h:52
 AliTRDdEdxCalibUtils.h:53
 AliTRDdEdxCalibUtils.h:54
 AliTRDdEdxCalibUtils.h:55
 AliTRDdEdxCalibUtils.h:56
 AliTRDdEdxCalibUtils.h:57
 AliTRDdEdxCalibUtils.h:58
 AliTRDdEdxCalibUtils.h:59
 AliTRDdEdxCalibUtils.h:60
 AliTRDdEdxCalibUtils.h:61
 AliTRDdEdxCalibUtils.h:62
 AliTRDdEdxCalibUtils.h:63
 AliTRDdEdxCalibUtils.h:64
 AliTRDdEdxCalibUtils.h:65
 AliTRDdEdxCalibUtils.h:66
 AliTRDdEdxCalibUtils.h:67
 AliTRDdEdxCalibUtils.h:68
 AliTRDdEdxCalibUtils.h:69
 AliTRDdEdxCalibUtils.h:70
 AliTRDdEdxCalibUtils.h:71
 AliTRDdEdxCalibUtils.h:72
 AliTRDdEdxCalibUtils.h:73
 AliTRDdEdxCalibUtils.h:74
 AliTRDdEdxCalibUtils.h:75
 AliTRDdEdxCalibUtils.h:76
 AliTRDdEdxCalibUtils.h:77
 AliTRDdEdxCalibUtils.h:78
 AliTRDdEdxCalibUtils.h:79
 AliTRDdEdxCalibUtils.h:80
 AliTRDdEdxCalibUtils.h:81
 AliTRDdEdxCalibUtils.h:82
 AliTRDdEdxCalibUtils.h:83
 AliTRDdEdxCalibUtils.h:84
 AliTRDdEdxCalibUtils.h:85
 AliTRDdEdxCalibUtils.h:86
 AliTRDdEdxCalibUtils.h:87