]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibDButil.h
M AliTPCTransform.cxx - Eff C++ warning
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibDButil.h
index c35bf983ba2e255123249d7b578264b73f1b9c39..315fd42815002b3060b2c3b909b0915d07bce227 100644 (file)
@@ -17,6 +17,8 @@ class AliDCSSensorArray;
 class AliTPCcalibDB;
 class AliTPCCalPad;
 class AliTPCmapper;
+class AliTPCCalibRaw;
+class TGraph;
 
 class AliTPCcalibDButil : public TObject
 {
@@ -26,7 +28,8 @@ public:
 
   void UpdateFromCalibDB();
   //data processing functions
-  void ProcessCEdata(const char* fitFormula, TVectorD &fitResultsA, TVectorD &fitResultsC, Int_t &noutliersCE);
+  void ProcessCEdata(const char* fitFormula, TVectorD &fitResultsA, TVectorD &fitResultsC,
+                     Int_t &noutliersCE, Double_t & chi2A, Double_t &chi2C, AliTPCCalPad *outCE=0);
   void ProcessCEgraphs(TVectorD &vecTEntries, TVectorD &vecTMean, TVectorD &vecTRMS, TVectorD &vecTMedian,
                        TVectorD &vecQEntries, TVectorD &vecQMean, TVectorD &vecQRMS, TVectorD &vecQMedian,
                        Float_t &driftTimeA, Float_t &driftTimeC );
@@ -36,6 +39,10 @@ public:
   void ProcessPulser(TVectorD &vMeanTime);
   void ProcessALTROConfig(Int_t &nMasked);
   void ProcessGoofie(TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS);
+  //processing functions using reference data
+  void ProcessPedestalVariations(TVectorF &pedestalDeviations);
+  void ProcessNoiseVariations(TVectorF &noiseDeviations);
+  void ProcessPulserVariations(TVectorF &pulserQdeviations, Float_t &varQMean, Int_t &npadsOutOneTB, Int_t &npadsOffAdd);
   //getter preprocess information
   Int_t GetNPulserOutliers() const {return fNpulserOutliers;}
   Float_t GetMeanAltro(const AliTPCCalROC *roc, const Int_t row, const Int_t pad, AliTPCCalROC *rocOut=0x0);
@@ -50,10 +57,38 @@ public:
   void SetALTROData(AliTPCCalPad *masked)
                 {fALTROMasked=masked;}
   void SetGoofieArray(AliDCSSensorArray *arr) {fGoofieArray=arr;}
+  //setters for pad by pad information
+  void SetRefFile(const char* filename);
+  void SetRefPulserData(AliTPCCalPad *tmean, AliTPCCalPad *trms=0x0, AliTPCCalPad *qmean=0x0)
+                {fRefPulserTmean=tmean; fRefPulserTrms=trms; fRefPulserQmean=qmean;}
+  void SetRefCEData(AliTPCCalPad *tmean, AliTPCCalPad *trms=0x0, AliTPCCalPad *qmean=0x0)
+                {fRefCETmean=tmean; fRefCETrms=trms; fRefCEQmean=qmean;}
+  void SetRefNoisePedestal(AliTPCCalPad *noise, AliTPCCalPad *pedestal=0x0)
+                {fRefPadNoise=noise; fRefPedestals=pedestal;}
+  void SetRefALTROData(AliTPCCalPad *masked)
+                {fRefALTROMasked=masked;}
+  
   //creation of derived pad by pad calibration data
-  AliTPCCalPad *CreatePadTime0(Int_t model=0);
+  AliTPCCalPad *CreatePadTime0(Int_t model, Double_t &gyA, Double_t &gyC, Double_t &chi2A, Double_t &chi2C);
+  //
+  // create outlyer maps
   //
+  AliTPCCalPad *CreateCEOutlyerMap(Int_t &noutliersCE, AliTPCCalPad *ceOut=0, Float_t minSignal=10, Float_t cutTrmsMin=0.9, Float_t cutTrmsMax=1.2, Float_t cutMaxDistT=0.7);
+  AliTPCCalPad *CreatePulserOutlyerMap(Int_t &noutliersPulser, AliTPCCalPad *pulserOut=0, Float_t cutTime=3, Float_t cutnRMSQ=5, Float_t cutnRMSrms=5);
+  //
+  AliTPCCalPad *CreatePadTime0CE(TVectorD &fitResultsA, TVectorD&fitResultsC, Int_t &nOut, Double_t &chi2A, Double_t &chi2C, const char *dumpfile=0);
+  //
+
   void UpdatePulserOutlierMap();
+  void UpdateRefPulserOutlierMap();
+  void PulserOutlierMap(AliTPCCalPad *pulOut, const AliTPCCalPad *pulT, const AliTPCCalPad *pulQ);
+
+  //
+  // graph tools
+  //
+  static Double_t  GetTriggerOffsetTPC(Int_t run, Int_t timeStamp, Double_t deltaT=86400, Double_t deltaTLaser=3600, Int_t valType=0);
+  static Double_t  GetVDriftTPC(Int_t run, Int_t timeStamp, Double_t deltaT=86400, Double_t deltaTLaser=3600, Int_t valType=0);
+  static Int_t     GetNearest(TGraph *graph, Double_t xref, Double_t &dx, Double_t &y);
 private:
   AliTPCcalibDB *fCalibDB;            //pointer to calibDB object
   AliTPCCalPad  *fPadNoise;           //noise information
@@ -66,6 +101,22 @@ private:
   AliTPCCalPad  *fCETrms;             //central electrode rms time information
   AliTPCCalPad  *fCEQmean;            //central electrode mean q information
   AliTPCCalPad  *fALTROMasked;        //ALTRO masked channels information
+  //
+  AliTPCCalibRaw *fCalibRaw;          //raw calibration object
+  //reference data
+  AliTPCCalPad  *fRefPadNoise;           //Reference noise information
+  AliTPCCalPad  *fRefPedestals;          //Reference pedestal information
+  AliTPCCalPad  *fRefPulserTmean;        //Reference pulser mean time information
+  AliTPCCalPad  *fRefPulserTrms;         //Reference pulser rms time information
+  AliTPCCalPad  *fRefPulserQmean;        //Reference pulser mean q information
+  AliTPCCalPad  *fRefPulserOutlier;      //Reference pulser outlier map
+  AliTPCCalPad  *fRefCETmean;            //Reference central electrode mean time information
+  AliTPCCalPad  *fRefCETrms;             //Reference central electrode rms time information
+  AliTPCCalPad  *fRefCEQmean;            //Reference central electrode mean q information
+  AliTPCCalPad  *fRefALTROMasked;        //Reference ALTRO masked channels information
+  //
+  AliTPCCalibRaw *fRefCalibRaw;          //Reference raw calibration object
+  
   //
   AliDCSSensorArray* fGoofieArray;    //Goofie Data
   //