]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibTimeGain.h
Coverity fixed
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibTimeGain.h
index 5e31facc0e0570bb062cdee77586b742dcf6642c..b87a7bb58d4076afebb9eb67029d741fe8cfbfe8 100644 (file)
@@ -9,19 +9,22 @@
 #include "TF1.h"
 #include "TArrayD.h"
 #include "TObjArray.h"
+#include "AliSplineFit.h"
 
 class TH1F;
 class TH3F;
 class TH2F;
 class THnSparse;
 class TList;
+class TGraphErrors;
 class AliESDEvent;
 class AliESDtrack;
 class AliTPCcalibLaser;
+class AliTPCseed;
 
 #include "TTreeStream.h"
 
+
 class AliTPCcalibTimeGain:public AliTPCcalibBase {
 public:
   AliTPCcalibTimeGain(); 
@@ -30,42 +33,55 @@ public:
   //
   virtual void           Process(AliESDEvent *event);
   virtual Long64_t       Merge(TCollection *li);
-  virtual void           Analyze();
+  virtual void           AnalyzeRun(Int_t minEntries);
+  //
+  void                   ProcessCosmicEvent(AliESDEvent *event);
+  void                   ProcessBeamEvent(AliESDEvent *event);
   //
   void                   CalculateBetheAlephParams(TH2F *hist, Double_t * ini);
   static void            BinLogX(THnSparse *h, Int_t axisDim);
   static void            BinLogX(TH1 *h);
-  static TGraph *        FitSlices(THnSparse *h, Int_t axisDim1, Int_t axisDim2, Int_t minEntries);
   //
-  THnSparse *            GetHistGainTime(){return (THnSparse*) fHistGainTime;};
-  TGraph    *            GetGraphGainVsTime(){return fGainVsTime;};
-  TH2F      *            GetHistDeDxTotal(){return (TH2F*) fHistDeDxTotal;};
+  THnSparse *            GetHistGainTime() const {return (THnSparse*) fHistGainTime;};
+  TH2F      *            GetHistDeDxTotal() const {return (TH2F*) fHistDeDxTotal;};
   //
-  void SetMIP(Float_t MIP){fMIP = MIP;};  
+  TGraphErrors *         GetGraphGainVsTime(Int_t runNumber = 0, Int_t minEntries = 2000);
+  static AliSplineFit *  MakeSplineFit(TGraphErrors * graph);
+  TGraphErrors *         GetGraphAttachment(Int_t minEntries, Int_t nmaxBin, Float_t fracLow=0.1, Float_t fracUp=0.9);
+  //
+  void SetMIP(Float_t MIP){fMIP = MIP;};
+  void SetUseMax(Bool_t UseMax){fUseMax = UseMax;};
   void SetLowerTrunc(Float_t LowerTrunc){fLowerTrunc = LowerTrunc;};
   void SetUpperTrunc(Float_t UpperTrunc){fUpperTrunc = UpperTrunc;};
   void SetUseShapeNorm(Bool_t UseShapeNorm){fUseShapeNorm = UseShapeNorm;};
   void SetUsePosNorm(Bool_t UsePosNorm){fUsePosNorm = UsePosNorm;};
   void SetUsePadNorm(Int_t UsePadNorm){fUsePadNorm = UsePadNorm;};
   void SetIsCosmic(Bool_t IsCosmic){fIsCosmic = IsCosmic;};
+  void SetLowMemoryConsumption(Bool_t LowMemoryConsumption){fLowMemoryConsumption = LowMemoryConsumption;};
+  void SetUseCookAnalytical(Bool_t UseCookAnalytical){fUseCookAnalytical = UseCookAnalytical;};
 
 private:
   //
-  THnSparse * fHistGainTime;            // dEdx vs. time, type, Driftlength, momentum P
-  TGraph    * fGainVsTime;              // multiplication factor vs. time
-  TH2F      * fHistDeDxTotal;           // dEdx vs. momentum for quality assurance
+  Float_t GetTPCdEdx(AliTPCseed * seed);   // wrapper for CookdEdxNorm or analytical
+  //
+  THnSparse    * fHistGainTime;            // dEdx vs. time, type, Driftlength, momentum P
+  TGraphErrors * fGainVsTime;              // multiplication factor vs. time
+  TH2F         * fHistDeDxTotal;           // dEdx vs. momentum for quality assurance
   //
   Float_t fIntegrationTimeDeDx;         // required statistics for each dEdx time bin
   //
-  Float_t fMIP;                         // rough MIP position in order to have scalable histograms
+  Float_t fMIP;                         // rough MIP position in order to have scaleable histograms
   //
+  Bool_t  fUseMax;                      // true: use max charge for dE/dx calculation, false: use total charge for dE/dx calculation
   Float_t fLowerTrunc;                  // lower truncation of dE/dx ; at most 5%
   Float_t fUpperTrunc;                  // upper truncation of dE/dx ; ca. 70%
   Bool_t  fUseShapeNorm;                // use empirical correction of dependencies
   Bool_t  fUsePosNorm;                  // charge correction (analytical?)
   Int_t   fUsePadNorm;                  // normalization of pad geometries
+  Bool_t  fUseCookAnalytical;           // true if CookdEdxAnalytical should be used
   //
-  Bool_t  fIsCosmic;                    // kTRUE if the analyzed runs are contain cosmic events
+  Bool_t  fIsCosmic;                    // kTRUE if the analyzed runs contain cosmic events
+  Bool_t  fLowMemoryConsumption;        // set this option kTRUE if the momenta information should not be stored in order to save memory
   //
   AliTPCcalibTimeGain(const AliTPCcalibTimeGain&); 
   AliTPCcalibTimeGain& operator=(const AliTPCcalibTimeGain&);