ROOT logo
// -*- 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 perthomas.hille@yale.edu                         *
 *                                                                        *
 * 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.                  *
 **************************************************************************/

// The Peak-Finder algorithm
// The amplitude is extracted  as a
// weighted sum of the samples using the 
// best possible weights.

#include "AliCaloRawAnalyzer.h"
#include "AliCaloConstants.h"

class AliCaloBunchInfo;
class AliCaloPeakFinderVectors;

class  AliCaloRawAnalyzerPeakFinder : public AliCaloRawAnalyzer
{
  friend class AliCaloRawAnalyzerFactory; // rule checker request
  
 public:
  
  virtual ~AliCaloRawAnalyzerPeakFinder() { ; }
  
  virtual AliCaloFitResults Evaluate( const std::vector<AliCaloBunchInfo> &bunchvector, 
                                      UInt_t altrocfg1, UInt_t altrocfg2 );

 private:
  
  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
 AliCaloRawAnalyzerPeakFinder.h:1
 AliCaloRawAnalyzerPeakFinder.h:2
 AliCaloRawAnalyzerPeakFinder.h:3
 AliCaloRawAnalyzerPeakFinder.h:4
 AliCaloRawAnalyzerPeakFinder.h:5
 AliCaloRawAnalyzerPeakFinder.h:6
 AliCaloRawAnalyzerPeakFinder.h:7
 AliCaloRawAnalyzerPeakFinder.h:8
 AliCaloRawAnalyzerPeakFinder.h:9
 AliCaloRawAnalyzerPeakFinder.h:10
 AliCaloRawAnalyzerPeakFinder.h:11
 AliCaloRawAnalyzerPeakFinder.h:12
 AliCaloRawAnalyzerPeakFinder.h:13
 AliCaloRawAnalyzerPeakFinder.h:14
 AliCaloRawAnalyzerPeakFinder.h:15
 AliCaloRawAnalyzerPeakFinder.h:16
 AliCaloRawAnalyzerPeakFinder.h:17
 AliCaloRawAnalyzerPeakFinder.h:18
 AliCaloRawAnalyzerPeakFinder.h:19
 AliCaloRawAnalyzerPeakFinder.h:20
 AliCaloRawAnalyzerPeakFinder.h:21
 AliCaloRawAnalyzerPeakFinder.h:22
 AliCaloRawAnalyzerPeakFinder.h:23
 AliCaloRawAnalyzerPeakFinder.h:24
 AliCaloRawAnalyzerPeakFinder.h:25
 AliCaloRawAnalyzerPeakFinder.h:26
 AliCaloRawAnalyzerPeakFinder.h:27
 AliCaloRawAnalyzerPeakFinder.h:28
 AliCaloRawAnalyzerPeakFinder.h:29
 AliCaloRawAnalyzerPeakFinder.h:30
 AliCaloRawAnalyzerPeakFinder.h:31
 AliCaloRawAnalyzerPeakFinder.h:32
 AliCaloRawAnalyzerPeakFinder.h:33
 AliCaloRawAnalyzerPeakFinder.h:34
 AliCaloRawAnalyzerPeakFinder.h:35
 AliCaloRawAnalyzerPeakFinder.h:36
 AliCaloRawAnalyzerPeakFinder.h:37
 AliCaloRawAnalyzerPeakFinder.h:38
 AliCaloRawAnalyzerPeakFinder.h:39
 AliCaloRawAnalyzerPeakFinder.h:40
 AliCaloRawAnalyzerPeakFinder.h:41
 AliCaloRawAnalyzerPeakFinder.h:42
 AliCaloRawAnalyzerPeakFinder.h:43
 AliCaloRawAnalyzerPeakFinder.h:44
 AliCaloRawAnalyzerPeakFinder.h:45
 AliCaloRawAnalyzerPeakFinder.h:46
 AliCaloRawAnalyzerPeakFinder.h:47
 AliCaloRawAnalyzerPeakFinder.h:48
 AliCaloRawAnalyzerPeakFinder.h:49
 AliCaloRawAnalyzerPeakFinder.h:50
 AliCaloRawAnalyzerPeakFinder.h:51
 AliCaloRawAnalyzerPeakFinder.h:52
 AliCaloRawAnalyzerPeakFinder.h:53
 AliCaloRawAnalyzerPeakFinder.h:54
 AliCaloRawAnalyzerPeakFinder.h:55
 AliCaloRawAnalyzerPeakFinder.h:56
 AliCaloRawAnalyzerPeakFinder.h:57
 AliCaloRawAnalyzerPeakFinder.h:58
 AliCaloRawAnalyzerPeakFinder.h:59
 AliCaloRawAnalyzerPeakFinder.h:60
 AliCaloRawAnalyzerPeakFinder.h:61
 AliCaloRawAnalyzerPeakFinder.h:62
 AliCaloRawAnalyzerPeakFinder.h:63
 AliCaloRawAnalyzerPeakFinder.h:64
 AliCaloRawAnalyzerPeakFinder.h:65
 AliCaloRawAnalyzerPeakFinder.h:66
 AliCaloRawAnalyzerPeakFinder.h:67
 AliCaloRawAnalyzerPeakFinder.h:68
 AliCaloRawAnalyzerPeakFinder.h:69
 AliCaloRawAnalyzerPeakFinder.h:70
 AliCaloRawAnalyzerPeakFinder.h:71
 AliCaloRawAnalyzerPeakFinder.h:72