+// -*- mode: c++ -*-
#ifndef ALICALORAWANALYZERPEAKFINDER_H
#define ALICALORAWANALYZERPEAKFINDER_H
-
-
/**************************************************************************
* This file is property of and copyright by *
* the Relativistic Heavy Ion Group (RHIG), Yale University, US, 2009 *
* Primary Author: Per Thomas Hille <perthomas.hille@yale.edu> *
* *
* Contributors are mentioned in the code where appropriate. *
- * Please report bugs to p.t.hille@fys.uio.no *
+ * Please report bugs to perthomas.hille@yale.edu *
* *
* Permission to use, copy, modify and distribute this software and its *
* documentation strictly for non-commercial purposes is hereby granted *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
// The Peak-Finder algorithm
// The amplitude is extracted as a
// weighted sum of the samples using the
// best possible weights.
-
#include "AliCaloRawAnalyzer.h"
-
-#define MAXSTART 3
-#define SAMPLERANGE 15
-#define SHIF 0.5
+#include "AliCaloConstants.h"
class AliCaloBunchInfo;
-
+class AliCaloPeakFinderVectors;
class AliCaloRawAnalyzerPeakFinder : public AliCaloRawAnalyzer
{
+ friend class AliCaloRawAnalyzerFactory; // rule checker request
+
public:
- AliCaloRawAnalyzerPeakFinder();
- virtual ~AliCaloRawAnalyzerPeakFinder();
- virtual AliCaloFitResults Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector, const UInt_t altrocfg1, const UInt_t altrocfg2 );
+
+ virtual ~AliCaloRawAnalyzerPeakFinder() { ; }
+
+ virtual AliCaloFitResults Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector,
+ UInt_t altrocfg1, UInt_t altrocfg2 );
private:
- AliCaloRawAnalyzerPeakFinder( const AliCaloRawAnalyzerPeakFinder & );
- AliCaloRawAnalyzerPeakFinder & operator = ( const AliCaloRawAnalyzerPeakFinder & );
-
- void LoadVectors();
- Double_t ScanCoarse(const Double_t *const array, const int length ) const ; // Find a rough estimate of peak position and t0
-
- // void PolTof( const double rectof ) const;
- double *fPFAmpVectorsCoarse[MAXSTART][SAMPLERANGE]; // Vectors for Amplitude extraction, first iteration
- double *fPFTofVectorsCoarse[MAXSTART][SAMPLERANGE]; // Vectors for TOF extraction, first iteration
-
- double *fPFAmpVectors[MAXSTART][SAMPLERANGE]; // Vectors for Amplitude extraction, second iteration
- double *fPFTofVectors[MAXSTART][SAMPLERANGE]; // Vectors for TOF extraction, second iteration
-
- // double fTof;
- // double fAmp;
-
- double fAmpA[3]; // The amplitude of the signal (eveluate 3 times using 3 differtnt phase shifts of the input samples )
- // double fAmp2;
- // double fAmp3;
-
+ AliCaloRawAnalyzerPeakFinder();
+ AliCaloRawAnalyzerPeakFinder( const AliCaloRawAnalyzerPeakFinder & );
+ AliCaloRawAnalyzerPeakFinder & operator = ( const AliCaloRawAnalyzerPeakFinder & );
+
+ void LoadVectorsOCDB();
+ void CopyVectors(const AliCaloPeakFinderVectors * pfvectors );
+ void ResetVectors();
+ void WriteRootFile() const;
+ void PrintVectors();
+ Double_t ScanCoarse( const Double_t *array, Int_t length ) const ; // Find a rough estimate of peak position and t0
+
+ Double_t fPFAmpVectorsCoarse[PF::MAXSTART][PF::SAMPLERANGE][100]; // Vectors for Amplitude extraction, first iteration
+ Double_t fPFTofVectorsCoarse[PF::MAXSTART][PF::SAMPLERANGE][100]; // Vectors for TOF extraction, first iteration
+ Double_t fPFAmpVectors [PF::MAXSTART][PF::SAMPLERANGE][100]; // Vectors for Amplitude extraction, second iteration
+ Double_t fPFTofVectors [PF::MAXSTART][PF::SAMPLERANGE][100]; // Vectors for TOF extraction, second iteration
+
+ AliCaloPeakFinderVectors * fPeakFinderVectors; // Collection of Peak-Fincer vectors
+
+ bool fRunOnAlien; // Wether or not we are running on the GRID
+ bool fIsInitialized; // init flag
+
ClassDef( AliCaloRawAnalyzerPeakFinder, 1 )
-
+
};
+
#endif