]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliCaloRawAnalyzerKStandard.h
Factorization of the different raw fitting algorithms in EMCAL (Per Thomas)
[u/mrichter/AliRoot.git] / EMCAL / AliCaloRawAnalyzerKStandard.h
diff --git a/EMCAL/AliCaloRawAnalyzerKStandard.h b/EMCAL/AliCaloRawAnalyzerKStandard.h
new file mode 100644 (file)
index 0000000..5abc093
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef ALICALORAWANALYZERSTANDARD_H
+#define ALICALORAWANALYZERSTANDARD_H
+/**************************************************************************
+ * This file is property of and copyright by                              *
+ * the Relativistic Heavy Ion Group (RHIG), Yale University, US, 2009     *
+ *                                                                        *
+ * Primary Author: Per Thomas Hille <p.t.hille@fys.uio.no>                *
+ *                                                                        *
+ * Contributors are mentioned in the code where appropriate.              *
+ * Please report bugs to p.t.hille@fys.uio.no                             *
+ *                                                                        *
+ * 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.                  *
+ **************************************************************************/
+
+
+// Extraction of amplitude and peak position
+// FRom CALO raw data using
+// Chi square fit
+
+#include "AliCaloRawAnalyzer.h"
+#include "AliCaloConstants.h"
+
+using namespace ALTRO;
+using namespace EMCAL;
+
+class  TF1;
+class  TGraph;
+
+class  AliCaloRawAnalyzerKStandard : public AliCaloRawAnalyzer
+{
+  friend class AliCaloRawAnalyzerFactory;
+
+ public:
+  //AliCaloRawAnalyzerKStandard();
+  virtual ~AliCaloRawAnalyzerKStandard();
+  virtual AliCaloFitResults  Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector, const UInt_t altrocfg1,  const UInt_t altrocfg2 );
+  void PrintFitResult(const TF1 *f) const;
+  static Double_t RawResponseFunction(Double_t *x, Double_t *par); 
+  void FitRaw(const Int_t firstTimeBin, const Int_t lastTimeBin, Float_t & amp, Float_t & time, 
+             Float_t & chi2, Bool_t & fitDone) const ;
+  void FitParabola(const TGraph *gSig, Float_t & amp) const ;
+  // shaper tau value, in time-bins, and flag for keeping tau fixed
+  Float_t GetTau() const { return fTau;};
+  void SetTau(Float_t f) { fTau = f; }; 
+  Bool_t GetFixTau() const { return fFixTau; }; 
+  void SetFixTau(Bool_t b) { fFixTau = b; }; 
+
+  // extra interfaces
+  TF1 * GetFit() const { return fTf1; };
+
+ private:
+  AliCaloRawAnalyzerKStandard();
+  AliCaloRawAnalyzerKStandard(const AliCaloRawAnalyzerKStandard & );
+  AliCaloRawAnalyzerKStandard  & operator = (const AliCaloRawAnalyzerKStandard  &);
+  double fXaxis[ALTROMAXSAMPLES]; //Axis if time bins, ( used by TGraph )
+  const double fkEulerSquared; //e^2 = 7.389056098930650227
+  TF1 *fTf1;     // Analytical formula of the Semi Gaussian to be fitted
+
+  Float_t fTau; // shaper tau, in time bins
+  Bool_t fFixTau; // flag if tau should be fix
+
+  ClassDef(AliCaloRawAnalyzerKStandard, 2)
+
+};
+
+#endif