#include "AliCaloRawAnalyzerFakeALTRO.h"
#include "AliCaloBunchInfo.h"
#include "AliCaloFitResults.h"
#include "AliLog.h"
#include "TMath.h"
#include <stdexcept>
#include <iostream>
#include "TF1.h"
#include "TGraph.h"
#include "AliCaloConstants.h"
using namespace std;
ClassImp( AliCaloRawAnalyzerFakeALTRO )
AliCaloRawAnalyzerFakeALTRO::AliCaloRawAnalyzerFakeALTRO() : AliCaloRawAnalyzerFitter("Chi Square Fit", "FakeAltro")
{
fAlgo= Algo::kFakeAltro;
}
AliCaloRawAnalyzerFakeALTRO::~AliCaloRawAnalyzerFakeALTRO()
{
}
AliCaloFitResults
AliCaloRawAnalyzerFakeALTRO::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 maxrev = maxampindex - bunchvector.at(index).GetStartBin();
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;
SelectSubarray( fReversed, bunchvector.at(index).GetLength(), maxrev, &first, &last, fFitArrayCut );
int nsamples = last - first + 1;
if( ( nsamples ) >= fNsampleCut )
{
Float_t tmax = (maxrev - first);
TGraph *graph = new TGraph( nsamples, fXaxis, &fReversed[first] );
fTf1->SetParameter(0, maxf*fkEulerSquared );
fTf1->SetParameter(1, tmax - fTau);
fTf1->SetParLimits(0, 0.5*maxf*fkEulerSquared, 2*maxf*fkEulerSquared );
fTf1->SetParLimits(1, tmax - fTau - 4, tmax - fTau + 4);
if (fFixTau) {
fTf1->FixParameter(2, fTau);
}
else {
fTf1->ReleaseParameter(2);
fTf1->SetParameter(2, fTau);
}
Short_t tmpStatus = 0;
try {
tmpStatus = graph->Fit(fTf1, "Q0RW");
}
catch (const std::exception & e) {
AliError( Form("TGraph Fit exception %s, fit status %d", e.what(),tmpStatus) );
return AliCaloFitResults( maxamp, ped, Ret::kNoFit, maxf, timebinOffset,
timebinOffset, Ret::kDummy, Ret::kDummy, Ret::kDummy, AliCaloFitSubarray(index, maxrev, first, last) );
}
if( fVerbose == true )
{
AliCaloRawAnalyzer::PrintBunch( bunchvector.at(index) );
PrintFitResult( fTf1 ) ;
}
tmax = fTf1->GetParameter(1) + timebinOffset - (maxrev - first)
+ fTf1->GetParameter(2);
delete graph;
return AliCaloFitResults( maxamp, ped , Ret::kFitPar,
fTf1->GetParameter(0)/fkEulerSquared,
tmax,
timebinOffset,
fTf1->GetChisquare(),
fTf1->GetNDF(),
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( Ret::kInvalid, Ret::kInvalid );
}
AliCaloRawAnalyzerFakeALTRO.cxx:1 AliCaloRawAnalyzerFakeALTRO.cxx:2 AliCaloRawAnalyzerFakeALTRO.cxx:3 AliCaloRawAnalyzerFakeALTRO.cxx:4 AliCaloRawAnalyzerFakeALTRO.cxx:5 AliCaloRawAnalyzerFakeALTRO.cxx:6 AliCaloRawAnalyzerFakeALTRO.cxx:7 AliCaloRawAnalyzerFakeALTRO.cxx:8 AliCaloRawAnalyzerFakeALTRO.cxx:9 AliCaloRawAnalyzerFakeALTRO.cxx:10 AliCaloRawAnalyzerFakeALTRO.cxx:11 AliCaloRawAnalyzerFakeALTRO.cxx:12 AliCaloRawAnalyzerFakeALTRO.cxx:13 AliCaloRawAnalyzerFakeALTRO.cxx:14 AliCaloRawAnalyzerFakeALTRO.cxx:15 AliCaloRawAnalyzerFakeALTRO.cxx:16 AliCaloRawAnalyzerFakeALTRO.cxx:17 AliCaloRawAnalyzerFakeALTRO.cxx:18 AliCaloRawAnalyzerFakeALTRO.cxx:19 AliCaloRawAnalyzerFakeALTRO.cxx:20 AliCaloRawAnalyzerFakeALTRO.cxx:21 AliCaloRawAnalyzerFakeALTRO.cxx:22 AliCaloRawAnalyzerFakeALTRO.cxx:23 AliCaloRawAnalyzerFakeALTRO.cxx:24 AliCaloRawAnalyzerFakeALTRO.cxx:25 AliCaloRawAnalyzerFakeALTRO.cxx:26 AliCaloRawAnalyzerFakeALTRO.cxx:27 AliCaloRawAnalyzerFakeALTRO.cxx:28 AliCaloRawAnalyzerFakeALTRO.cxx:29 AliCaloRawAnalyzerFakeALTRO.cxx:30 AliCaloRawAnalyzerFakeALTRO.cxx:31 AliCaloRawAnalyzerFakeALTRO.cxx:32 AliCaloRawAnalyzerFakeALTRO.cxx:33 AliCaloRawAnalyzerFakeALTRO.cxx:34 AliCaloRawAnalyzerFakeALTRO.cxx:35 AliCaloRawAnalyzerFakeALTRO.cxx:36 AliCaloRawAnalyzerFakeALTRO.cxx:37 AliCaloRawAnalyzerFakeALTRO.cxx:38 AliCaloRawAnalyzerFakeALTRO.cxx:39 AliCaloRawAnalyzerFakeALTRO.cxx:40 AliCaloRawAnalyzerFakeALTRO.cxx:41 AliCaloRawAnalyzerFakeALTRO.cxx:42 AliCaloRawAnalyzerFakeALTRO.cxx:43 AliCaloRawAnalyzerFakeALTRO.cxx:44 AliCaloRawAnalyzerFakeALTRO.cxx:45 AliCaloRawAnalyzerFakeALTRO.cxx:46 AliCaloRawAnalyzerFakeALTRO.cxx:47 AliCaloRawAnalyzerFakeALTRO.cxx:48 AliCaloRawAnalyzerFakeALTRO.cxx:49 AliCaloRawAnalyzerFakeALTRO.cxx:50 AliCaloRawAnalyzerFakeALTRO.cxx:51 AliCaloRawAnalyzerFakeALTRO.cxx:52 AliCaloRawAnalyzerFakeALTRO.cxx:53 AliCaloRawAnalyzerFakeALTRO.cxx:54 AliCaloRawAnalyzerFakeALTRO.cxx:55 AliCaloRawAnalyzerFakeALTRO.cxx:56 AliCaloRawAnalyzerFakeALTRO.cxx:57 AliCaloRawAnalyzerFakeALTRO.cxx:58 AliCaloRawAnalyzerFakeALTRO.cxx:59 AliCaloRawAnalyzerFakeALTRO.cxx:60 AliCaloRawAnalyzerFakeALTRO.cxx:61 AliCaloRawAnalyzerFakeALTRO.cxx:62 AliCaloRawAnalyzerFakeALTRO.cxx:63 AliCaloRawAnalyzerFakeALTRO.cxx:64 AliCaloRawAnalyzerFakeALTRO.cxx:65 AliCaloRawAnalyzerFakeALTRO.cxx:66 AliCaloRawAnalyzerFakeALTRO.cxx:67 AliCaloRawAnalyzerFakeALTRO.cxx:68 AliCaloRawAnalyzerFakeALTRO.cxx:69 AliCaloRawAnalyzerFakeALTRO.cxx:70 AliCaloRawAnalyzerFakeALTRO.cxx:71 AliCaloRawAnalyzerFakeALTRO.cxx:72 AliCaloRawAnalyzerFakeALTRO.cxx:73 AliCaloRawAnalyzerFakeALTRO.cxx:74 AliCaloRawAnalyzerFakeALTRO.cxx:75 AliCaloRawAnalyzerFakeALTRO.cxx:76 AliCaloRawAnalyzerFakeALTRO.cxx:77 AliCaloRawAnalyzerFakeALTRO.cxx:78 AliCaloRawAnalyzerFakeALTRO.cxx:79 AliCaloRawAnalyzerFakeALTRO.cxx:80 AliCaloRawAnalyzerFakeALTRO.cxx:81 AliCaloRawAnalyzerFakeALTRO.cxx:82 AliCaloRawAnalyzerFakeALTRO.cxx:83 AliCaloRawAnalyzerFakeALTRO.cxx:84 AliCaloRawAnalyzerFakeALTRO.cxx:85 AliCaloRawAnalyzerFakeALTRO.cxx:86 AliCaloRawAnalyzerFakeALTRO.cxx:87 AliCaloRawAnalyzerFakeALTRO.cxx:88 AliCaloRawAnalyzerFakeALTRO.cxx:89 AliCaloRawAnalyzerFakeALTRO.cxx:90 AliCaloRawAnalyzerFakeALTRO.cxx:91 AliCaloRawAnalyzerFakeALTRO.cxx:92 AliCaloRawAnalyzerFakeALTRO.cxx:93 AliCaloRawAnalyzerFakeALTRO.cxx:94 AliCaloRawAnalyzerFakeALTRO.cxx:95 AliCaloRawAnalyzerFakeALTRO.cxx:96 AliCaloRawAnalyzerFakeALTRO.cxx:97 AliCaloRawAnalyzerFakeALTRO.cxx:98 AliCaloRawAnalyzerFakeALTRO.cxx:99 AliCaloRawAnalyzerFakeALTRO.cxx:100 AliCaloRawAnalyzerFakeALTRO.cxx:101 AliCaloRawAnalyzerFakeALTRO.cxx:102 AliCaloRawAnalyzerFakeALTRO.cxx:103 AliCaloRawAnalyzerFakeALTRO.cxx:104 AliCaloRawAnalyzerFakeALTRO.cxx:105 AliCaloRawAnalyzerFakeALTRO.cxx:106 AliCaloRawAnalyzerFakeALTRO.cxx:107 AliCaloRawAnalyzerFakeALTRO.cxx:108 AliCaloRawAnalyzerFakeALTRO.cxx:109 AliCaloRawAnalyzerFakeALTRO.cxx:110 AliCaloRawAnalyzerFakeALTRO.cxx:111 AliCaloRawAnalyzerFakeALTRO.cxx:112 AliCaloRawAnalyzerFakeALTRO.cxx:113 AliCaloRawAnalyzerFakeALTRO.cxx:114 AliCaloRawAnalyzerFakeALTRO.cxx:115 AliCaloRawAnalyzerFakeALTRO.cxx:116 AliCaloRawAnalyzerFakeALTRO.cxx:117 AliCaloRawAnalyzerFakeALTRO.cxx:118 AliCaloRawAnalyzerFakeALTRO.cxx:119 AliCaloRawAnalyzerFakeALTRO.cxx:120 AliCaloRawAnalyzerFakeALTRO.cxx:121 AliCaloRawAnalyzerFakeALTRO.cxx:122 AliCaloRawAnalyzerFakeALTRO.cxx:123 AliCaloRawAnalyzerFakeALTRO.cxx:124 AliCaloRawAnalyzerFakeALTRO.cxx:125 AliCaloRawAnalyzerFakeALTRO.cxx:126 AliCaloRawAnalyzerFakeALTRO.cxx:127 AliCaloRawAnalyzerFakeALTRO.cxx:128 AliCaloRawAnalyzerFakeALTRO.cxx:129 AliCaloRawAnalyzerFakeALTRO.cxx:130 AliCaloRawAnalyzerFakeALTRO.cxx:131 AliCaloRawAnalyzerFakeALTRO.cxx:132 AliCaloRawAnalyzerFakeALTRO.cxx:133 AliCaloRawAnalyzerFakeALTRO.cxx:134 AliCaloRawAnalyzerFakeALTRO.cxx:135 AliCaloRawAnalyzerFakeALTRO.cxx:136 AliCaloRawAnalyzerFakeALTRO.cxx:137 AliCaloRawAnalyzerFakeALTRO.cxx:138 AliCaloRawAnalyzerFakeALTRO.cxx:139