+// -*- 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; // shutting up the rule checker
public:
- AliCaloRawAnalyzerPeakFinder();
virtual ~AliCaloRawAnalyzerPeakFinder();
- virtual AliCaloFitResults Evaluate( const vector<AliCaloBunchInfo> &bunchvector, const UInt_t altrocfg1, const UInt_t altrocfg2 );
+ virtual AliCaloFitResults Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector,
+ const UInt_t altrocfg1, const UInt_t altrocfg2 );
private:
+ AliCaloRawAnalyzerPeakFinder();
AliCaloRawAnalyzerPeakFinder( const AliCaloRawAnalyzerPeakFinder & );
AliCaloRawAnalyzerPeakFinder & operator = ( const AliCaloRawAnalyzerPeakFinder & );
-
- void LoadVectors();
- double *fPFAmpVectors[MAXSTART][SAMPLERANGE]; // Vectors for Amplitude extraction
- double *fPFTofVectors[MAXSTART][SAMPLERANGE]; // Vectors for TOF extraction
-
- // 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;
-
+ void LoadVectorsOCDB();
+ void CopyVectors(const AliCaloPeakFinderVectors *const pfvectors );
+ void ResetVectors();
+ void InitOCDB(bool alien) const;
+ void WriteRootFile() const;
+ void PrintVectors();
+ Double_t ScanCoarse(const Double_t *const array, const int 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