#include "AliCaloRawAnalyzerFastFit.h"
#include "AliCaloFastAltroFitv0.h"
#include "AliCaloFitResults.h"
#include "AliCaloBunchInfo.h"
#include "TMath.h"
#include <iostream>
using namespace std;
#include "AliCaloConstants.h"
ClassImp( AliCaloRawAnalyzerFastFit )
AliCaloRawAnalyzerFastFit::AliCaloRawAnalyzerFastFit() : AliCaloRawAnalyzerFitter("Fast Fit (Alexei)", "FF")
{
fAlgo= Algo::kFastFit;
}
AliCaloFitResults
AliCaloRawAnalyzerFastFit::Evaluate( const vector<AliCaloBunchInfo> &bunchvector,
UInt_t altrocfg1, UInt_t altrocfg2 )
{
short maxampindex;
short maxamp;
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, Algo::kCrude, maxf, timebinOffset*TIMEBINWITH);
}
else if ( maxf >= fAmpCut )
{
int first = 0;
int last = 0;
int maxrev = maxampindex - bunchvector.at(index).GetStartBin();
SelectSubarray( fReversed, bunchvector.at(index).GetLength(), maxrev , &first, &last, fFitArrayCut);
int nsamples = last - first + 1;
if( ( nsamples ) >= fNsampleCut )
{
Double_t ordered[1008];
for(int i=0; i < nsamples ; i++ )
{
ordered[i] = fReversed[first + i];
}
Double_t eSignal = 1;
Double_t dAmp = maxf;
Double_t eAmp = 0;
Double_t dTime0 = 0;
Double_t eTime = 0;
Double_t chi2 = 0;
Double_t dTau = 2.35;
AliCaloFastAltroFitv0::FastFit(fXaxis, ordered , nsamples,
eSignal, dTau, dAmp, eAmp, dTime0, eTime, chi2);
Double_t dTimeMax = dTime0 + timebinOffset - (maxrev - first)
+ dTau;
return AliCaloFitResults(maxamp,ped,Ret::kFitPar,dAmp,dTimeMax*TIMEBINWITH,timebinOffset,chi2,Ret::kDummy,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*TIMEBINWITH, timebinOffset, chi2, ndf, Ret::kDummy, AliCaloFitSubarray(index, maxrev, first, last) );
}
}
}
return AliCaloFitResults( Ret::kInvalid , Ret::kInvalid );
}
AliCaloRawAnalyzerFastFit.cxx:1 AliCaloRawAnalyzerFastFit.cxx:2 AliCaloRawAnalyzerFastFit.cxx:3 AliCaloRawAnalyzerFastFit.cxx:4 AliCaloRawAnalyzerFastFit.cxx:5 AliCaloRawAnalyzerFastFit.cxx:6 AliCaloRawAnalyzerFastFit.cxx:7 AliCaloRawAnalyzerFastFit.cxx:8 AliCaloRawAnalyzerFastFit.cxx:9 AliCaloRawAnalyzerFastFit.cxx:10 AliCaloRawAnalyzerFastFit.cxx:11 AliCaloRawAnalyzerFastFit.cxx:12 AliCaloRawAnalyzerFastFit.cxx:13 AliCaloRawAnalyzerFastFit.cxx:14 AliCaloRawAnalyzerFastFit.cxx:15 AliCaloRawAnalyzerFastFit.cxx:16 AliCaloRawAnalyzerFastFit.cxx:17 AliCaloRawAnalyzerFastFit.cxx:18 AliCaloRawAnalyzerFastFit.cxx:19 AliCaloRawAnalyzerFastFit.cxx:20 AliCaloRawAnalyzerFastFit.cxx:21 AliCaloRawAnalyzerFastFit.cxx:22 AliCaloRawAnalyzerFastFit.cxx:23 AliCaloRawAnalyzerFastFit.cxx:24 AliCaloRawAnalyzerFastFit.cxx:25 AliCaloRawAnalyzerFastFit.cxx:26 AliCaloRawAnalyzerFastFit.cxx:27 AliCaloRawAnalyzerFastFit.cxx:28 AliCaloRawAnalyzerFastFit.cxx:29 AliCaloRawAnalyzerFastFit.cxx:30 AliCaloRawAnalyzerFastFit.cxx:31 AliCaloRawAnalyzerFastFit.cxx:32 AliCaloRawAnalyzerFastFit.cxx:33 AliCaloRawAnalyzerFastFit.cxx:34 AliCaloRawAnalyzerFastFit.cxx:35 AliCaloRawAnalyzerFastFit.cxx:36 AliCaloRawAnalyzerFastFit.cxx:37 AliCaloRawAnalyzerFastFit.cxx:38 AliCaloRawAnalyzerFastFit.cxx:39 AliCaloRawAnalyzerFastFit.cxx:40 AliCaloRawAnalyzerFastFit.cxx:41 AliCaloRawAnalyzerFastFit.cxx:42 AliCaloRawAnalyzerFastFit.cxx:43 AliCaloRawAnalyzerFastFit.cxx:44 AliCaloRawAnalyzerFastFit.cxx:45 AliCaloRawAnalyzerFastFit.cxx:46 AliCaloRawAnalyzerFastFit.cxx:47 AliCaloRawAnalyzerFastFit.cxx:48 AliCaloRawAnalyzerFastFit.cxx:49 AliCaloRawAnalyzerFastFit.cxx:50 AliCaloRawAnalyzerFastFit.cxx:51 AliCaloRawAnalyzerFastFit.cxx:52 AliCaloRawAnalyzerFastFit.cxx:53 AliCaloRawAnalyzerFastFit.cxx:54 AliCaloRawAnalyzerFastFit.cxx:55 AliCaloRawAnalyzerFastFit.cxx:56 AliCaloRawAnalyzerFastFit.cxx:57 AliCaloRawAnalyzerFastFit.cxx:58 AliCaloRawAnalyzerFastFit.cxx:59 AliCaloRawAnalyzerFastFit.cxx:60 AliCaloRawAnalyzerFastFit.cxx:61 AliCaloRawAnalyzerFastFit.cxx:62 AliCaloRawAnalyzerFastFit.cxx:63 AliCaloRawAnalyzerFastFit.cxx:64 AliCaloRawAnalyzerFastFit.cxx:65 AliCaloRawAnalyzerFastFit.cxx:66 AliCaloRawAnalyzerFastFit.cxx:67 AliCaloRawAnalyzerFastFit.cxx:68 AliCaloRawAnalyzerFastFit.cxx:69 AliCaloRawAnalyzerFastFit.cxx:70 AliCaloRawAnalyzerFastFit.cxx:71 AliCaloRawAnalyzerFastFit.cxx:72 AliCaloRawAnalyzerFastFit.cxx:73 AliCaloRawAnalyzerFastFit.cxx:74 AliCaloRawAnalyzerFastFit.cxx:75 AliCaloRawAnalyzerFastFit.cxx:76 AliCaloRawAnalyzerFastFit.cxx:77 AliCaloRawAnalyzerFastFit.cxx:78 AliCaloRawAnalyzerFastFit.cxx:79 AliCaloRawAnalyzerFastFit.cxx:80 AliCaloRawAnalyzerFastFit.cxx:81 AliCaloRawAnalyzerFastFit.cxx:82 AliCaloRawAnalyzerFastFit.cxx:83 AliCaloRawAnalyzerFastFit.cxx:84 AliCaloRawAnalyzerFastFit.cxx:85 AliCaloRawAnalyzerFastFit.cxx:86 AliCaloRawAnalyzerFastFit.cxx:87 AliCaloRawAnalyzerFastFit.cxx:88 AliCaloRawAnalyzerFastFit.cxx:89 AliCaloRawAnalyzerFastFit.cxx:90 AliCaloRawAnalyzerFastFit.cxx:91 AliCaloRawAnalyzerFastFit.cxx:92 AliCaloRawAnalyzerFastFit.cxx:93 AliCaloRawAnalyzerFastFit.cxx:94 AliCaloRawAnalyzerFastFit.cxx:95 AliCaloRawAnalyzerFastFit.cxx:96 AliCaloRawAnalyzerFastFit.cxx:97 AliCaloRawAnalyzerFastFit.cxx:98 AliCaloRawAnalyzerFastFit.cxx:99 AliCaloRawAnalyzerFastFit.cxx:100 AliCaloRawAnalyzerFastFit.cxx:101 AliCaloRawAnalyzerFastFit.cxx:102 AliCaloRawAnalyzerFastFit.cxx:103 AliCaloRawAnalyzerFastFit.cxx:104 AliCaloRawAnalyzerFastFit.cxx:105 AliCaloRawAnalyzerFastFit.cxx:106 AliCaloRawAnalyzerFastFit.cxx:107 AliCaloRawAnalyzerFastFit.cxx:108 AliCaloRawAnalyzerFastFit.cxx:109 AliCaloRawAnalyzerFastFit.cxx:110 AliCaloRawAnalyzerFastFit.cxx:111