#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)
{
fAlgo= Algo::kPeakFinder;
fPeakFinderVectors = new AliCaloPeakFinderVectors() ;
ResetVectors();
LoadVectorsOCDB();
}
void
AliCaloRawAnalyzerPeakFinder::ResetVectors()
{
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
{
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 )
{
if( fIsInitialized == false )
{
cout << __FILE__ << ":" << __LINE__ << "ERROR, peakfinder vectors not loaded" << endl;
return AliCaloFitResults(kInvalid, kInvalid);
}
short maxampindex;
short maxamp;
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 )
{
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 )
{
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;
Float_t chi2 = CalculateChi2(fAmp, tof-timebinOffset+maxrev, first, last);
Int_t ndf = last - first - 1;
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;
return AliCaloFitResults( maxamp, ped , Ret::kCrude, maxf, timebinOffset,
timebinOffset, chi2, ndf, Ret::kDummy, AliCaloFitSubarray(index, maxrev, first, last) );
}
}
}
return AliCaloFitResults(kInvalid, kInvalid);
}
void
AliCaloRawAnalyzerPeakFinder::CopyVectors( const AliCaloPeakFinderVectors *const pfv )
{
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()
{
AliCDBEntry* entry = AliCDBManager::Instance()->Get("EMCAL/Calib/PeakFinder/");
if( entry != 0 )
{
AliCaloPeakFinderVectors *pfv = (AliCaloPeakFinderVectors *)entry->GetObject();
if( pfv == 0 )
{
cout << __FILE__ << ":" << __LINE__ << "_ ERRROR " << endl;
}
CopyVectors( pfv );
if( pfv != 0 )
{
fIsInitialized = true;
}
}
}
void
AliCaloRawAnalyzerPeakFinder::WriteRootFile() const
{
fPeakFinderVectors->PrintVectors();
TFile *f = new TFile("peakfindervectors2.root", "recreate" );
fPeakFinderVectors->Write();
f->Close();
delete f;
}
void
AliCaloRawAnalyzerPeakFinder::PrintVectors()
{
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