#include <TString.h>
#include <TVectorD.h>
#include <TObjArray.h>
#include <TFile.h>
#include <AliTPCComposedCorrection.h>
#include <AliTPCCorrectionLookupTable.h>
#include <AliToyMCEventGenerator.h>
AliTPCComposedCorrection* GetComposedResidualDistortion(TString fluctuationMap, TString averageMap, Bool_t rescale=kTRUE)
{
//
//
//
TFile fFluct(fluctuationMap);
AliTPCCorrectionLookupTable *corrFluct = (AliTPCCorrectionLookupTable*)fFluct.Get("map");
fFluct.Close();
TFile fAverage(averageMap);
AliTPCCorrectionLookupTable *corrAverage = (AliTPCCorrectionLookupTable*)fAverage.Get("map");
fAverage.Close();
TObjArray *arrMaps = new TObjArray(2);
// !!!!! In AliTPCComposedCorrection::GetDistortion MakeInverseIterator is called !!!!
// for this reason we have to add the maps in the wrong order
arrMaps->Add(corrAverage); // correction with the average Map
arrMaps->Add(corrFluct); // distortion with the fluctuation Map
// create the composed correction
// if the weight are set to +1 and -1, the first map will be responsible for the distortions
// The second map for the corrections
AliTPCComposedCorrection *residualDistortion = new AliTPCComposedCorrection(arrMaps, AliTPCComposedCorrection::kQueueResidual);
TVectorD weights(2);
weights(0)=+1.;
weights(1)=-1.;
if (rescale) {
Float_t dummy=0;
weights(1)=-AliToyMCEventGenerator::GetSCScalingFactor(corrFluct, corrAverage,dummy);
}
residualDistortion->SetWeights(&weights);
return residualDistortion;
}
AliTPCCorrectionLookupTable* GetResidualTable(TString fluctuationMap, TString averageMap, Bool_t rescale=kTRUE)
{
TFile fFluct(fluctuationMap);
AliTPCCorrectionLookupTable *corrFluct = (AliTPCCorrectionLookupTable*)fFluct.Get("map");
fFluct.Close();
TFile fAverage(averageMap);
AliTPCCorrectionLookupTable *corrAverage = (AliTPCCorrectionLookupTable*)fAverage.Get("map");
fAverage.Close();
Double_t scale=AliToyMCEventGenerator::GetSCScalingFactor(corrFluct, corrAverage,dummy);
corrAverage->SetCorrScaleFactor(scale);
AliTPCCorrectionLookupTable *tab=new AliTPCCorrectionLookupTable;
tab->CreateResidual(corrFluct, corrAverage);
GetComposedResidualDistortion.C:1 GetComposedResidualDistortion.C:2 GetComposedResidualDistortion.C:3 GetComposedResidualDistortion.C:4 GetComposedResidualDistortion.C:5 GetComposedResidualDistortion.C:6 GetComposedResidualDistortion.C:7 GetComposedResidualDistortion.C:8 GetComposedResidualDistortion.C:9 GetComposedResidualDistortion.C:10 GetComposedResidualDistortion.C:11 GetComposedResidualDistortion.C:12 GetComposedResidualDistortion.C:13 GetComposedResidualDistortion.C:14 GetComposedResidualDistortion.C:15 GetComposedResidualDistortion.C:16 GetComposedResidualDistortion.C:17 GetComposedResidualDistortion.C:18 GetComposedResidualDistortion.C:19 GetComposedResidualDistortion.C:20 GetComposedResidualDistortion.C:21 GetComposedResidualDistortion.C:22 GetComposedResidualDistortion.C:23 GetComposedResidualDistortion.C:24 GetComposedResidualDistortion.C:25 GetComposedResidualDistortion.C:26 GetComposedResidualDistortion.C:27 GetComposedResidualDistortion.C:28 GetComposedResidualDistortion.C:29 GetComposedResidualDistortion.C:30 GetComposedResidualDistortion.C:31 GetComposedResidualDistortion.C:32 GetComposedResidualDistortion.C:33 GetComposedResidualDistortion.C:34 GetComposedResidualDistortion.C:35 GetComposedResidualDistortion.C:36 GetComposedResidualDistortion.C:37 GetComposedResidualDistortion.C:38 GetComposedResidualDistortion.C:39 GetComposedResidualDistortion.C:40 GetComposedResidualDistortion.C:41 GetComposedResidualDistortion.C:42 GetComposedResidualDistortion.C:43 GetComposedResidualDistortion.C:44 GetComposedResidualDistortion.C:45 GetComposedResidualDistortion.C:46 GetComposedResidualDistortion.C:47 GetComposedResidualDistortion.C:48 GetComposedResidualDistortion.C:49 GetComposedResidualDistortion.C:50 GetComposedResidualDistortion.C:51 GetComposedResidualDistortion.C:52 GetComposedResidualDistortion.C:53 GetComposedResidualDistortion.C:54 GetComposedResidualDistortion.C:55 GetComposedResidualDistortion.C:56 GetComposedResidualDistortion.C:57 GetComposedResidualDistortion.C:58 GetComposedResidualDistortion.C:59 GetComposedResidualDistortion.C:60 GetComposedResidualDistortion.C:61 GetComposedResidualDistortion.C:62 GetComposedResidualDistortion.C:63 GetComposedResidualDistortion.C:64 GetComposedResidualDistortion.C:65 GetComposedResidualDistortion.C:66 GetComposedResidualDistortion.C:67