ROOT logo
// -*- mode: c++ -*-
/**************************************************************************
 * 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.
// The weights are calculated only once and the
// actual extraction of amplitude and peak position
// is done with a simple vector multiplication, allowing
// extremely fast computations.

#include "AliCaloRawAnalyzerPeakFinder.h"
#include "AliCaloBunchInfo.h"
#include "AliCaloFitResults.h"
#include "TMath.h"
#include "AliLog.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "TFile.h"
#include "AliCaloPeakFinderVectors.h"
#include <iostream>

using namespace std;

ClassImp( AliCaloRawAnalyzerPeakFinder )


AliCaloRawAnalyzerPeakFinder::AliCaloRawAnalyzerPeakFinder() :AliCaloRawAnalyzer("Peak-Finder", "PF"),  
							      fPeakFinderVectors(0),
							      fRunOnAlien(false),
							      fIsInitialized(false)
{
  // Ctor
  fAlgo= Algo::kPeakFinder;
  fPeakFinderVectors = new AliCaloPeakFinderVectors() ;
  ResetVectors();
  LoadVectorsOCDB();
}

void  
AliCaloRawAnalyzerPeakFinder::ResetVectors()
{
  //As name implies
  for(int i=0; i < PF::MAXSTART; i++)
    {
      for(int j=0; j < PF::SAMPLERANGE; j++ )
	{
	  for(int k=0; k < 100; k++ )
	    {
	      fPFAmpVectors[i][j][k] = 0; 
	      fPFTofVectors[i][j][k] = 0;
	      fPFAmpVectorsCoarse[i][j][k] = 0;
	      fPFTofVectorsCoarse[i][j][k] = 0; 
	    }
	}
    }
}


Double_t  
AliCaloRawAnalyzerPeakFinder::ScanCoarse(const Double_t *const array, const int length ) const
{
  // Fisrt (coarce) estimate of Amplitude using the Peak-Finder.
  // The output of the first iteration is sued to select vectors 
  // for the second iteration.

  Double_t tmpTof = 0;
  Double_t tmpAmp= 0;

  for(int i=0; i < length; i++)
    {
      tmpTof += fPFTofVectorsCoarse[0][length][i]*array[i]; 
      tmpAmp += fPFAmpVectorsCoarse[0][length][i]*array[i]; 
    }
  
  tmpTof = tmpTof / tmpAmp ;
  return tmpTof;
}


AliCaloFitResults 
AliCaloRawAnalyzerPeakFinder::Evaluate( const vector<AliCaloBunchInfo> &bunchvector, const UInt_t altrocfg1,  const UInt_t altrocfg2 )
{
  // Evaluation of amplitude and TOF
  if( fIsInitialized == false )
    {
      cout << __FILE__ << ":" << __LINE__ << "ERROR, peakfinder vectors not loaded" << endl;
      return  AliCaloFitResults(kInvalid, kInvalid);
    }

  // Extracting the amplitude using the Peak-Finder algorithm
  // The amplitude is a weighted sum of the samples using 
  // optimum weights.

  short maxampindex; //index of maximum amplitude
  short maxamp; //Maximum amplitude
  fAmp = 0;
  int index = SelectBunch( bunchvector,  &maxampindex,  &maxamp );
  
  if( index >= 0)
    {
      Float_t ped = ReverseAndSubtractPed( &(bunchvector.at(index))  ,  altrocfg1, altrocfg2, fReversed  );
      Float_t maxf = TMath::MaxElement(   bunchvector.at(index).GetLength(),  fReversed );
      short timebinOffset = maxampindex - (bunchvector.at( index ).GetLength()-1); 
 
      if(  maxf < fAmpCut  ||  ( maxamp - ped) > fOverflowCut  ) // (maxamp - ped) > fOverflowCut = Close to saturation (use low gain then)
	{
	  return  AliCaloFitResults( maxamp, ped, Ret::kCrude, maxf, timebinOffset);
 	}            
      else if ( maxf >= fAmpCut )
	{
	  int first = 0;
	  int last = 0;
	  short maxrev = maxampindex  -  bunchvector.at(index).GetStartBin();	  
	  SelectSubarray( fReversed,  bunchvector.at(index).GetLength(), maxrev, &first, &last, fFitArrayCut);
	  int nsamples =  last - first;

	  if( ( nsamples  )  >= fNsampleCut ) // no if statement needed really; keep for readability
	    {
	      int startbin = bunchvector.at(index).GetStartBin();  
	      int n = last - first;  
	      int pfindex = n - fNsampleCut; 
	      pfindex = pfindex > PF::SAMPLERANGE ? PF::SAMPLERANGE : pfindex;
	      int dt =  maxampindex - startbin -2; 
	      int tmpindex = 0;
	      Float_t tmptof = ScanCoarse( &fReversed[dt] , n );
	      
	      if( tmptof < -1 )
		{
		  tmpindex = 0;
		}
	      else
		if( tmptof  > -1 && tmptof < 100 )
		  {
		    tmpindex = 1;
		  }
		else
		  {
		    tmpindex = 2;
		  }

	      double tof = 0;
	      for(int k=0; k < PF::SAMPLERANGE; k++   )
		{
		  tof +=  fPFTofVectors[0][pfindex][k]*fReversed[ dt  +k + tmpindex -1 ];   
		}
	      for( int i=0; i < PF::SAMPLERANGE; i++ )
		{
		  {
		    
		    fAmp += fPFAmpVectors[0][pfindex][i]*fReversed[ dt  +i  +tmpindex -1 ];
		  }
		}

	      if( TMath::Abs(  (maxf - fAmp  )/maxf )  >   0.1 )
		{
		  fAmp = maxf;
		}
	      
	      tof = timebinOffset - 0.01*tof/fAmp - fL1Phase/TIMEBINWITH; // clock
	      Float_t chi2 = CalculateChi2(fAmp, tof-timebinOffset+maxrev, first, last);
	      Int_t ndf = last - first - 1; // nsamples - 2
	      return AliCaloFitResults( maxamp, ped , Ret::kFitPar, fAmp, tof, 
					timebinOffset, chi2, ndf,
					Ret::kDummy, AliCaloFitSubarray(index, maxrev, first, last) );  
	    }
	  else
	    {
	      Float_t chi2 = CalculateChi2(maxf, maxrev, first, last);
	      Int_t ndf = last - first - 1; // nsamples - 2
	      return AliCaloFitResults( maxamp, ped , Ret::kCrude, maxf, timebinOffset,
					timebinOffset, chi2, ndf, Ret::kDummy, AliCaloFitSubarray(index, maxrev, first, last) ); 
	    }
	} // ampcut
    }
  return  AliCaloFitResults(kInvalid, kInvalid);
}


void   
AliCaloRawAnalyzerPeakFinder::CopyVectors( const AliCaloPeakFinderVectors *const pfv )
{
  // As name implies
  if ( pfv != 0)
    {
      for(int i = 0;  i < PF::MAXSTART ; i++)
	{
	  for( int j=0; j < PF::SAMPLERANGE; j++)  
	    {
	      pfv->GetVector( i, j, fPFAmpVectors[i][j] ,  fPFTofVectors[i][j],    
	       		      fPFAmpVectorsCoarse[i][j] , fPFTofVectorsCoarse[i][j]  ); 

	      fPeakFinderVectors->SetVector( i, j, fPFAmpVectors[i][j], fPFTofVectors[i][j],    
					     fPFAmpVectorsCoarse[i][j], fPFTofVectorsCoarse[i][j] );   
	    }
	}
    }
  else
    {
      AliFatal( "pfv = ZERO !!!!!!!");
    } 
}


void   
AliCaloRawAnalyzerPeakFinder::LoadVectorsOCDB()
{
  //Loading of Peak-Finder  vectors from the 
  //Offline Condition Database  (OCDB)
  AliCDBEntry* entry = AliCDBManager::Instance()->Get("EMCAL/Calib/PeakFinder/");
  
  if( entry != 0 )
  {
    //cout << __FILE__ << ":" << __LINE__ << ": Printing metadata !! " << endl;
    //entry->PrintMetaData();
    AliCaloPeakFinderVectors  *pfv = (AliCaloPeakFinderVectors *)entry->GetObject(); 
    if( pfv == 0 )
    {
      cout << __FILE__ << ":" << __LINE__ << "_ ERRROR " << endl;
    }
    CopyVectors( pfv );
    
    if( pfv != 0 )
    {
      fIsInitialized = true;
    }
  }
}


void   
AliCaloRawAnalyzerPeakFinder::WriteRootFile() const
{ // Utility function to write Peak-Finder vectors to an root file
  // The output is used to create an OCDB entry.
  fPeakFinderVectors->PrintVectors();
  TFile *f = new TFile("peakfindervectors2.root",  "recreate" );
  fPeakFinderVectors->Write();
  f->Close();
  delete f;
}


void 
AliCaloRawAnalyzerPeakFinder::PrintVectors()
{ // Utility function to write Peak-Finder vectors 
  for(int i=0; i < 20; i++)
    {
      for( int j = 0; j < PF::MAXSTART; j ++ )
	{
	  for( int k=0; k < PF::SAMPLERANGE; k++ )
	    {
	      cout << fPFAmpVectors[j][k][i] << "\t" ;
	    }
	}
      cout << endl;
    }
  cout << __FILE__ << ":" << __LINE__ << ":.... DONE !!" << endl;
}
 AliCaloRawAnalyzerPeakFinder.cxx:1
 AliCaloRawAnalyzerPeakFinder.cxx:2
 AliCaloRawAnalyzerPeakFinder.cxx:3
 AliCaloRawAnalyzerPeakFinder.cxx:4
 AliCaloRawAnalyzerPeakFinder.cxx:5
 AliCaloRawAnalyzerPeakFinder.cxx:6
 AliCaloRawAnalyzerPeakFinder.cxx:7
 AliCaloRawAnalyzerPeakFinder.cxx:8
 AliCaloRawAnalyzerPeakFinder.cxx:9
 AliCaloRawAnalyzerPeakFinder.cxx:10
 AliCaloRawAnalyzerPeakFinder.cxx:11
 AliCaloRawAnalyzerPeakFinder.cxx:12
 AliCaloRawAnalyzerPeakFinder.cxx:13
 AliCaloRawAnalyzerPeakFinder.cxx:14
 AliCaloRawAnalyzerPeakFinder.cxx:15
 AliCaloRawAnalyzerPeakFinder.cxx:16
 AliCaloRawAnalyzerPeakFinder.cxx:17
 AliCaloRawAnalyzerPeakFinder.cxx:18
 AliCaloRawAnalyzerPeakFinder.cxx:19
 AliCaloRawAnalyzerPeakFinder.cxx:20
 AliCaloRawAnalyzerPeakFinder.cxx:21
 AliCaloRawAnalyzerPeakFinder.cxx:22
 AliCaloRawAnalyzerPeakFinder.cxx:23
 AliCaloRawAnalyzerPeakFinder.cxx:24
 AliCaloRawAnalyzerPeakFinder.cxx:25
 AliCaloRawAnalyzerPeakFinder.cxx:26
 AliCaloRawAnalyzerPeakFinder.cxx:27
 AliCaloRawAnalyzerPeakFinder.cxx:28
 AliCaloRawAnalyzerPeakFinder.cxx:29
 AliCaloRawAnalyzerPeakFinder.cxx:30
 AliCaloRawAnalyzerPeakFinder.cxx:31
 AliCaloRawAnalyzerPeakFinder.cxx:32
 AliCaloRawAnalyzerPeakFinder.cxx:33
 AliCaloRawAnalyzerPeakFinder.cxx:34
 AliCaloRawAnalyzerPeakFinder.cxx:35
 AliCaloRawAnalyzerPeakFinder.cxx:36
 AliCaloRawAnalyzerPeakFinder.cxx:37
 AliCaloRawAnalyzerPeakFinder.cxx:38
 AliCaloRawAnalyzerPeakFinder.cxx:39
 AliCaloRawAnalyzerPeakFinder.cxx:40
 AliCaloRawAnalyzerPeakFinder.cxx:41
 AliCaloRawAnalyzerPeakFinder.cxx:42
 AliCaloRawAnalyzerPeakFinder.cxx:43
 AliCaloRawAnalyzerPeakFinder.cxx:44
 AliCaloRawAnalyzerPeakFinder.cxx:45
 AliCaloRawAnalyzerPeakFinder.cxx:46
 AliCaloRawAnalyzerPeakFinder.cxx:47
 AliCaloRawAnalyzerPeakFinder.cxx:48
 AliCaloRawAnalyzerPeakFinder.cxx:49
 AliCaloRawAnalyzerPeakFinder.cxx:50
 AliCaloRawAnalyzerPeakFinder.cxx:51
 AliCaloRawAnalyzerPeakFinder.cxx:52
 AliCaloRawAnalyzerPeakFinder.cxx:53
 AliCaloRawAnalyzerPeakFinder.cxx:54
 AliCaloRawAnalyzerPeakFinder.cxx:55
 AliCaloRawAnalyzerPeakFinder.cxx:56
 AliCaloRawAnalyzerPeakFinder.cxx:57
 AliCaloRawAnalyzerPeakFinder.cxx:58
 AliCaloRawAnalyzerPeakFinder.cxx:59
 AliCaloRawAnalyzerPeakFinder.cxx:60
 AliCaloRawAnalyzerPeakFinder.cxx:61
 AliCaloRawAnalyzerPeakFinder.cxx:62
 AliCaloRawAnalyzerPeakFinder.cxx:63
 AliCaloRawAnalyzerPeakFinder.cxx:64
 AliCaloRawAnalyzerPeakFinder.cxx:65
 AliCaloRawAnalyzerPeakFinder.cxx:66
 AliCaloRawAnalyzerPeakFinder.cxx:67
 AliCaloRawAnalyzerPeakFinder.cxx:68
 AliCaloRawAnalyzerPeakFinder.cxx:69
 AliCaloRawAnalyzerPeakFinder.cxx:70
 AliCaloRawAnalyzerPeakFinder.cxx:71
 AliCaloRawAnalyzerPeakFinder.cxx:72
 AliCaloRawAnalyzerPeakFinder.cxx:73
 AliCaloRawAnalyzerPeakFinder.cxx:74
 AliCaloRawAnalyzerPeakFinder.cxx:75
 AliCaloRawAnalyzerPeakFinder.cxx:76
 AliCaloRawAnalyzerPeakFinder.cxx:77
 AliCaloRawAnalyzerPeakFinder.cxx:78
 AliCaloRawAnalyzerPeakFinder.cxx:79
 AliCaloRawAnalyzerPeakFinder.cxx:80
 AliCaloRawAnalyzerPeakFinder.cxx:81
 AliCaloRawAnalyzerPeakFinder.cxx:82
 AliCaloRawAnalyzerPeakFinder.cxx:83
 AliCaloRawAnalyzerPeakFinder.cxx:84
 AliCaloRawAnalyzerPeakFinder.cxx:85
 AliCaloRawAnalyzerPeakFinder.cxx:86
 AliCaloRawAnalyzerPeakFinder.cxx:87
 AliCaloRawAnalyzerPeakFinder.cxx:88
 AliCaloRawAnalyzerPeakFinder.cxx:89
 AliCaloRawAnalyzerPeakFinder.cxx:90
 AliCaloRawAnalyzerPeakFinder.cxx:91
 AliCaloRawAnalyzerPeakFinder.cxx:92
 AliCaloRawAnalyzerPeakFinder.cxx:93
 AliCaloRawAnalyzerPeakFinder.cxx:94
 AliCaloRawAnalyzerPeakFinder.cxx:95
 AliCaloRawAnalyzerPeakFinder.cxx:96
 AliCaloRawAnalyzerPeakFinder.cxx:97
 AliCaloRawAnalyzerPeakFinder.cxx:98
 AliCaloRawAnalyzerPeakFinder.cxx:99
 AliCaloRawAnalyzerPeakFinder.cxx:100
 AliCaloRawAnalyzerPeakFinder.cxx:101
 AliCaloRawAnalyzerPeakFinder.cxx:102
 AliCaloRawAnalyzerPeakFinder.cxx:103
 AliCaloRawAnalyzerPeakFinder.cxx:104
 AliCaloRawAnalyzerPeakFinder.cxx:105
 AliCaloRawAnalyzerPeakFinder.cxx:106
 AliCaloRawAnalyzerPeakFinder.cxx:107
 AliCaloRawAnalyzerPeakFinder.cxx:108
 AliCaloRawAnalyzerPeakFinder.cxx:109
 AliCaloRawAnalyzerPeakFinder.cxx:110
 AliCaloRawAnalyzerPeakFinder.cxx:111
 AliCaloRawAnalyzerPeakFinder.cxx:112
 AliCaloRawAnalyzerPeakFinder.cxx:113
 AliCaloRawAnalyzerPeakFinder.cxx:114
 AliCaloRawAnalyzerPeakFinder.cxx:115
 AliCaloRawAnalyzerPeakFinder.cxx:116
 AliCaloRawAnalyzerPeakFinder.cxx:117
 AliCaloRawAnalyzerPeakFinder.cxx:118
 AliCaloRawAnalyzerPeakFinder.cxx:119
 AliCaloRawAnalyzerPeakFinder.cxx:120
 AliCaloRawAnalyzerPeakFinder.cxx:121
 AliCaloRawAnalyzerPeakFinder.cxx:122
 AliCaloRawAnalyzerPeakFinder.cxx:123
 AliCaloRawAnalyzerPeakFinder.cxx:124
 AliCaloRawAnalyzerPeakFinder.cxx:125
 AliCaloRawAnalyzerPeakFinder.cxx:126
 AliCaloRawAnalyzerPeakFinder.cxx:127
 AliCaloRawAnalyzerPeakFinder.cxx:128
 AliCaloRawAnalyzerPeakFinder.cxx:129
 AliCaloRawAnalyzerPeakFinder.cxx:130
 AliCaloRawAnalyzerPeakFinder.cxx:131
 AliCaloRawAnalyzerPeakFinder.cxx:132
 AliCaloRawAnalyzerPeakFinder.cxx:133
 AliCaloRawAnalyzerPeakFinder.cxx:134
 AliCaloRawAnalyzerPeakFinder.cxx:135
 AliCaloRawAnalyzerPeakFinder.cxx:136
 AliCaloRawAnalyzerPeakFinder.cxx:137
 AliCaloRawAnalyzerPeakFinder.cxx:138
 AliCaloRawAnalyzerPeakFinder.cxx:139
 AliCaloRawAnalyzerPeakFinder.cxx:140
 AliCaloRawAnalyzerPeakFinder.cxx:141
 AliCaloRawAnalyzerPeakFinder.cxx:142
 AliCaloRawAnalyzerPeakFinder.cxx:143
 AliCaloRawAnalyzerPeakFinder.cxx:144
 AliCaloRawAnalyzerPeakFinder.cxx:145
 AliCaloRawAnalyzerPeakFinder.cxx:146
 AliCaloRawAnalyzerPeakFinder.cxx:147
 AliCaloRawAnalyzerPeakFinder.cxx:148
 AliCaloRawAnalyzerPeakFinder.cxx:149
 AliCaloRawAnalyzerPeakFinder.cxx:150
 AliCaloRawAnalyzerPeakFinder.cxx:151
 AliCaloRawAnalyzerPeakFinder.cxx:152
 AliCaloRawAnalyzerPeakFinder.cxx:153
 AliCaloRawAnalyzerPeakFinder.cxx:154
 AliCaloRawAnalyzerPeakFinder.cxx:155
 AliCaloRawAnalyzerPeakFinder.cxx:156
 AliCaloRawAnalyzerPeakFinder.cxx:157
 AliCaloRawAnalyzerPeakFinder.cxx:158
 AliCaloRawAnalyzerPeakFinder.cxx:159
 AliCaloRawAnalyzerPeakFinder.cxx:160
 AliCaloRawAnalyzerPeakFinder.cxx:161
 AliCaloRawAnalyzerPeakFinder.cxx:162
 AliCaloRawAnalyzerPeakFinder.cxx:163
 AliCaloRawAnalyzerPeakFinder.cxx:164
 AliCaloRawAnalyzerPeakFinder.cxx:165
 AliCaloRawAnalyzerPeakFinder.cxx:166
 AliCaloRawAnalyzerPeakFinder.cxx:167
 AliCaloRawAnalyzerPeakFinder.cxx:168
 AliCaloRawAnalyzerPeakFinder.cxx:169
 AliCaloRawAnalyzerPeakFinder.cxx:170
 AliCaloRawAnalyzerPeakFinder.cxx:171
 AliCaloRawAnalyzerPeakFinder.cxx:172
 AliCaloRawAnalyzerPeakFinder.cxx:173
 AliCaloRawAnalyzerPeakFinder.cxx:174
 AliCaloRawAnalyzerPeakFinder.cxx:175
 AliCaloRawAnalyzerPeakFinder.cxx:176
 AliCaloRawAnalyzerPeakFinder.cxx:177
 AliCaloRawAnalyzerPeakFinder.cxx:178
 AliCaloRawAnalyzerPeakFinder.cxx:179
 AliCaloRawAnalyzerPeakFinder.cxx:180
 AliCaloRawAnalyzerPeakFinder.cxx:181
 AliCaloRawAnalyzerPeakFinder.cxx:182
 AliCaloRawAnalyzerPeakFinder.cxx:183
 AliCaloRawAnalyzerPeakFinder.cxx:184
 AliCaloRawAnalyzerPeakFinder.cxx:185
 AliCaloRawAnalyzerPeakFinder.cxx:186
 AliCaloRawAnalyzerPeakFinder.cxx:187
 AliCaloRawAnalyzerPeakFinder.cxx:188
 AliCaloRawAnalyzerPeakFinder.cxx:189
 AliCaloRawAnalyzerPeakFinder.cxx:190
 AliCaloRawAnalyzerPeakFinder.cxx:191
 AliCaloRawAnalyzerPeakFinder.cxx:192
 AliCaloRawAnalyzerPeakFinder.cxx:193
 AliCaloRawAnalyzerPeakFinder.cxx:194
 AliCaloRawAnalyzerPeakFinder.cxx:195
 AliCaloRawAnalyzerPeakFinder.cxx:196
 AliCaloRawAnalyzerPeakFinder.cxx:197
 AliCaloRawAnalyzerPeakFinder.cxx:198
 AliCaloRawAnalyzerPeakFinder.cxx:199
 AliCaloRawAnalyzerPeakFinder.cxx:200
 AliCaloRawAnalyzerPeakFinder.cxx:201
 AliCaloRawAnalyzerPeakFinder.cxx:202
 AliCaloRawAnalyzerPeakFinder.cxx:203
 AliCaloRawAnalyzerPeakFinder.cxx:204
 AliCaloRawAnalyzerPeakFinder.cxx:205
 AliCaloRawAnalyzerPeakFinder.cxx:206
 AliCaloRawAnalyzerPeakFinder.cxx:207
 AliCaloRawAnalyzerPeakFinder.cxx:208
 AliCaloRawAnalyzerPeakFinder.cxx:209
 AliCaloRawAnalyzerPeakFinder.cxx:210
 AliCaloRawAnalyzerPeakFinder.cxx:211
 AliCaloRawAnalyzerPeakFinder.cxx:212
 AliCaloRawAnalyzerPeakFinder.cxx:213
 AliCaloRawAnalyzerPeakFinder.cxx:214
 AliCaloRawAnalyzerPeakFinder.cxx:215
 AliCaloRawAnalyzerPeakFinder.cxx:216
 AliCaloRawAnalyzerPeakFinder.cxx:217
 AliCaloRawAnalyzerPeakFinder.cxx:218
 AliCaloRawAnalyzerPeakFinder.cxx:219
 AliCaloRawAnalyzerPeakFinder.cxx:220
 AliCaloRawAnalyzerPeakFinder.cxx:221
 AliCaloRawAnalyzerPeakFinder.cxx:222
 AliCaloRawAnalyzerPeakFinder.cxx:223
 AliCaloRawAnalyzerPeakFinder.cxx:224
 AliCaloRawAnalyzerPeakFinder.cxx:225
 AliCaloRawAnalyzerPeakFinder.cxx:226
 AliCaloRawAnalyzerPeakFinder.cxx:227
 AliCaloRawAnalyzerPeakFinder.cxx:228
 AliCaloRawAnalyzerPeakFinder.cxx:229
 AliCaloRawAnalyzerPeakFinder.cxx:230
 AliCaloRawAnalyzerPeakFinder.cxx:231
 AliCaloRawAnalyzerPeakFinder.cxx:232
 AliCaloRawAnalyzerPeakFinder.cxx:233
 AliCaloRawAnalyzerPeakFinder.cxx:234
 AliCaloRawAnalyzerPeakFinder.cxx:235
 AliCaloRawAnalyzerPeakFinder.cxx:236
 AliCaloRawAnalyzerPeakFinder.cxx:237
 AliCaloRawAnalyzerPeakFinder.cxx:238
 AliCaloRawAnalyzerPeakFinder.cxx:239
 AliCaloRawAnalyzerPeakFinder.cxx:240
 AliCaloRawAnalyzerPeakFinder.cxx:241
 AliCaloRawAnalyzerPeakFinder.cxx:242
 AliCaloRawAnalyzerPeakFinder.cxx:243
 AliCaloRawAnalyzerPeakFinder.cxx:244
 AliCaloRawAnalyzerPeakFinder.cxx:245
 AliCaloRawAnalyzerPeakFinder.cxx:246
 AliCaloRawAnalyzerPeakFinder.cxx:247
 AliCaloRawAnalyzerPeakFinder.cxx:248
 AliCaloRawAnalyzerPeakFinder.cxx:249
 AliCaloRawAnalyzerPeakFinder.cxx:250
 AliCaloRawAnalyzerPeakFinder.cxx:251
 AliCaloRawAnalyzerPeakFinder.cxx:252
 AliCaloRawAnalyzerPeakFinder.cxx:253
 AliCaloRawAnalyzerPeakFinder.cxx:254
 AliCaloRawAnalyzerPeakFinder.cxx:255
 AliCaloRawAnalyzerPeakFinder.cxx:256
 AliCaloRawAnalyzerPeakFinder.cxx:257
 AliCaloRawAnalyzerPeakFinder.cxx:258
 AliCaloRawAnalyzerPeakFinder.cxx:259
 AliCaloRawAnalyzerPeakFinder.cxx:260
 AliCaloRawAnalyzerPeakFinder.cxx:261
 AliCaloRawAnalyzerPeakFinder.cxx:262
 AliCaloRawAnalyzerPeakFinder.cxx:263
 AliCaloRawAnalyzerPeakFinder.cxx:264
 AliCaloRawAnalyzerPeakFinder.cxx:265
 AliCaloRawAnalyzerPeakFinder.cxx:266
 AliCaloRawAnalyzerPeakFinder.cxx:267
 AliCaloRawAnalyzerPeakFinder.cxx:268
 AliCaloRawAnalyzerPeakFinder.cxx:269
 AliCaloRawAnalyzerPeakFinder.cxx:270
 AliCaloRawAnalyzerPeakFinder.cxx:271
 AliCaloRawAnalyzerPeakFinder.cxx:272
 AliCaloRawAnalyzerPeakFinder.cxx:273
 AliCaloRawAnalyzerPeakFinder.cxx:274
 AliCaloRawAnalyzerPeakFinder.cxx:275