Script supersceeded by AliForwarddNdetaTask.C and
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibTCF.h
CommitLineData
eb7e0771 1#ifndef ALI_TPC_CALIB_TCF_H
2#define ALI_TPC_CALIB_TCF_H
3
4
5/* Copyright(c) 2007-08, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
7
8///////////////////////////////////////////////////////////////////////////////
9// Class AliTPCCalibTCF //
10// Class for Extraction and test of TCF parameters needed by the ALTRO chip //
11///////////////////////////////////////////////////////////////////////////////
12
13#include "TSystem.h"
40377546 14#include <exception>
15
eb7e0771 16
17class TObject;
18class TGraph;
752b0cc7 19class AliRawReader;
eb7e0771 20class AliTPCRawStream;
752b0cc7 21class AliTPCRawStreamV3;
eb7e0771 22class TNtuple;
23class TH1F;
df4cfd77 24class TH2F;
eb7e0771 25
26class AliTPCCalibTCF : public TNamed {
27
28public:
29
30 AliTPCCalibTCF();
d0bd4fcc 31 AliTPCCalibTCF(Int_t gateWidth, Int_t Sample, Int_t pulseLength, Int_t lowPulseLim, Int_t upPulseLim, Double_t rmsLim, Double_t ratioIntLim);
eb7e0771 32 AliTPCCalibTCF(const AliTPCCalibTCF &sig);
33 virtual ~AliTPCCalibTCF();
34
35 AliTPCCalibTCF& operator = (const AliTPCCalibTCF &source);
36
37
752b0cc7 38 void ProcessRawFileV3(const char *nameRawFile, const char *nameFileOut);
39 void ProcessRawEventV3(AliRawReader *rawReader,AliTPCRawStreamV3 *rawStream, const char *nameFileOut);
40
55f06b51 41 void ProcessRawFile(const char *nameRawFile, const char *nameFileOut, bool bUseHLTOUT=false);
eb7e0771 42 void ProcessRawEvent(AliTPCRawStream *rawStream, const char *nameFileOut);
43
44 void MergeHistoPerSector(const char *nameFileIn);
45
d0bd4fcc 46 void AnalyzeRootFile(const char *nameFileIn, Int_t minNumPulse=1, Int_t histStart=1, Int_t histEnd=1000000);
56c85970 47 Int_t AnalyzePulse(TH1F * const hisIn, Double_t *coefZ, Double_t *coefP);
eb7e0771 48
df4cfd77 49 void TestTCFonRootFile(const char *nameFileIn, const char *nameFileTCF, Int_t nPulseMin=0, Int_t plotFlag=0, Int_t lowKey=1, Int_t upKey=1000000);
55f06b51 50 void TestTCFonRawFile(const char *nameRawFile, const char *nameFileOut, const char *nameFileTCF, Int_t nPulseMin=0, Int_t plotFlag=0, bool bUseHLTOUT=false);
df4cfd77 51
52 Int_t DumpTCFparamToFilePerSector(const char *nameFileTCFPerSec, const char *nameMappingFile="$ALICE_ROOT/TPC/Calib/tpcMapping.root");
53 Int_t DumpTCFparamToFilePerPad(const char *nameFileTCFPerPad,const char *nameFileTCFPerSec, const char *nameMappingFile="$ALICE_ROOT/TPC/Calib/tpcMapping.root");
54
55 TH2F *PlotOccupSummary2Dhist(const char *nameFileIn, Int_t side=0);
56 void PlotOccupSummary(const char *nameFile, Int_t side=0, Int_t nPulseMin=0);
eb7e0771 57
eb7e0771 58 void PlotQualitySummary(const char *nameFileQuality, const char *plotSpec="widthRed:maxUndershot", const char *cut="maxUndershot<0.1&&maxUndershot>-40&&widthRed>0&&widthRed<100", const char *pOpt="LEGO2Z");
59
60 void PrintPulseThresholds();
61
df4cfd77 62 void MergeHistoPerFile(const char *fileNameIn, const char *fileSum, Int_t mode=0);
63 void MergeToOneFile(const char *nameFileSum);
eb7e0771 64
65private:
66
67 // tresholds for proper pulse finder (Analyze functions)
68 Int_t fGateWidth; // expected Gate fluctuation length
69 Int_t fSample; // expected usefull signal length
70 Int_t fPulseLength; // needed pulselength for TC characterisation
71 Int_t fLowPulseLim; // lower pulse height limit
72 Int_t fUpPulseLim; // upper pulse height limit
73 Double_t fRMSLim; // signal RMS limit
d0bd4fcc 74 Double_t fRatioIntLim;// ratio of signal-integral/pulse-integral limit
eb7e0771 75
76 Int_t FitPulse(TNtuple *dataTuple, Double_t *coefZ, Double_t *coefP);
56c85970 77 static void FitFcn(Int_t &nPar, Double_t *grad, Double_t &f, Double_t * const par, Int_t iflag);
eb7e0771 78
79 Double_t* ExtractPZValues(Double_t *param);
d0bd4fcc 80 Int_t Equalization(TNtuple *dataTuple, Double_t *coefZ, Double_t *coefP);
eb7e0771 81
56c85970 82 Int_t FindCorTCFparam(TH1F * const hisIn, const char *nameFileTCF, Double_t *coefZ, Double_t *coefP);
eb7e0771 83 Double_t *GetQualityOfTCF(TH1F *hisIn, Double_t *coefZ, Double_t *coefP,Int_t plotFlag=0);
84
56c85970 85 TNtuple *ApplyTCFilter(TH1F * const hisIn, Double_t * const coefZ, Double_t * const coefP, Int_t plotFlag=0);
eb7e0771 86
87 ClassDef(AliTPCCalibTCF,1);
88
89};
90#endif