Updates
[u/mrichter/AliRoot.git] / EMCAL / AliCaloRawAnalyzerPeakFinder.h
1 // -*- mode: c++ -*-
2 #ifndef ALICALORAWANALYZERPEAKFINDER_H
3 #define ALICALORAWANALYZERPEAKFINDER_H
4 /**************************************************************************
5  * This file is property of and copyright by                              *
6  * the Relativistic Heavy Ion Group (RHIG), Yale University, US, 2009     *
7  *                                                                        *
8  * Primary Author: Per Thomas Hille  <perthomas.hille@yale.edu>           *
9  *                                                                        *
10  * Contributors are mentioned in the code where appropriate.              *
11  * Please report bugs to perthomas.hille@yale.edu                         *
12  *                                                                        *
13  * Permission to use, copy, modify and distribute this software and its   *
14  * documentation strictly for non-commercial purposes is hereby granted   *
15  * without fee, provided that the above copyright notice appears in all   *
16  * copies and that both the copyright notice and this permission notice   *
17  * appear in the supporting documentation. The authors make no claims     *
18  * about the suitability of this software for any purpose. It is          *
19  * provided "as is" without express or implied warranty.                  *
20  **************************************************************************/
21
22 // The Peak-Finder algorithm
23 // The amplitude is extracted  as a
24 // weighted sum of the samples using the 
25 // best possible weights.
26
27 #include "AliCaloRawAnalyzer.h"
28 #include "AliCaloConstants.h"
29
30 class AliCaloBunchInfo;
31 class AliCaloPeakFinderVectors;
32
33 class  AliCaloRawAnalyzerPeakFinder : public AliCaloRawAnalyzer
34 {
35   friend class AliCaloRawAnalyzerFactory; // rule checker request
36   
37  public:
38   
39   virtual ~AliCaloRawAnalyzerPeakFinder() { ; }
40   
41   virtual AliCaloFitResults Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector, 
42                                       UInt_t altrocfg1, UInt_t altrocfg2 );
43
44  private:
45   
46   AliCaloRawAnalyzerPeakFinder();
47   AliCaloRawAnalyzerPeakFinder(                const AliCaloRawAnalyzerPeakFinder & );
48   AliCaloRawAnalyzerPeakFinder  & operator = ( const AliCaloRawAnalyzerPeakFinder & );
49   
50   void     LoadVectorsOCDB();
51   void     CopyVectors(const AliCaloPeakFinderVectors * pfvectors );
52   void     ResetVectors();
53   void     WriteRootFile() const;
54   void     PrintVectors();
55   Double_t ScanCoarse( const Double_t *array, Int_t  length ) const ; // Find a rough estimate of peak position and t0
56   
57   Double_t fPFAmpVectorsCoarse[PF::MAXSTART][PF::SAMPLERANGE][100];   // Vectors for Amplitude extraction, first iteration
58   Double_t fPFTofVectorsCoarse[PF::MAXSTART][PF::SAMPLERANGE][100];   // Vectors for TOF extraction, first iteration
59   Double_t fPFAmpVectors      [PF::MAXSTART][PF::SAMPLERANGE][100];   // Vectors for Amplitude extraction, second iteration
60   Double_t fPFTofVectors      [PF::MAXSTART][PF::SAMPLERANGE][100];   // Vectors for TOF extraction, second iteration
61   
62   AliCaloPeakFinderVectors * fPeakFinderVectors; // Collection of Peak-Fincer vectors
63   
64   bool fRunOnAlien;    // Wether or not we are running on the GRID
65   bool fIsInitialized; // init flag
66  
67   ClassDef( AliCaloRawAnalyzerPeakFinder, 1 )
68   
69 };
70
71
72 #endif