#include <AliLog.h>
#include <TCanvas.h>
#include <TH3F.h>
+#include <TH2F.h>
#include <TH1D.h>
#include <TDirectory.h>
#include <AliCorrection.h>
fVertexRecoCorrection(0),
fTriggerBiasCorrectionMBToINEL(0),
fTriggerBiasCorrectionMBToNSD(0),
- fTriggerBiasCorrectionMBToND(0)
+ fTriggerBiasCorrectionMBToND(0),
+ fTriggerBiasCorrectionMBToOnePart(0)
{
// default constructor
}
fVertexRecoCorrection(0),
fTriggerBiasCorrectionMBToINEL(0),
fTriggerBiasCorrectionMBToNSD(0),
- fTriggerBiasCorrectionMBToND(0)
+ fTriggerBiasCorrectionMBToND(0),
+ fTriggerBiasCorrectionMBToOnePart(0)
{
//
// constructor
fTriggerBiasCorrectionMBToINEL = new AliCorrection("TriggerBias_MBToINEL", "TriggerBias_MBToINEL", analysis);
fTriggerBiasCorrectionMBToNSD = new AliCorrection("TriggerBias_MBToNSD", "TriggerBias_MBToNSD", analysis);
fTriggerBiasCorrectionMBToND = new AliCorrection("TriggerBias_MBToND", "TriggerBias_MBToND", analysis);
+ fTriggerBiasCorrectionMBToOnePart = new AliCorrection("TriggerBias_MBToOnePart", "TriggerBias_MBToOnePart", analysis);
}
//____________________________________________________________________
delete fTriggerBiasCorrectionMBToND;
fTriggerBiasCorrectionMBToND = 0;
}
+
+ if (fTriggerBiasCorrectionMBToOnePart) {
+ delete fTriggerBiasCorrectionMBToOnePart;
+ fTriggerBiasCorrectionMBToOnePart = 0;
+ }
}
//____________________________________________________________________
fTriggerBiasCorrectionMBToINEL->Divide();
fTriggerBiasCorrectionMBToNSD->Divide();
fTriggerBiasCorrectionMBToND->Divide();
+ fTriggerBiasCorrectionMBToOnePart->Divide();
}
//____________________________________________________________________
TList* collectionTriggerBiasMBToINEL = new TList;
TList* collectionTriggerBiasMBToNSD = new TList;
TList* collectionTriggerBiasMBToND = new TList;
+ TList* collectionTriggerBiasMBToOnePart = new TList;
Int_t count = 0;
while ((obj = iter->Next())) {
collectionTriggerBiasMBToINEL->Add(entry->fTriggerBiasCorrectionMBToINEL);
collectionTriggerBiasMBToNSD ->Add(entry->fTriggerBiasCorrectionMBToNSD);
collectionTriggerBiasMBToND ->Add(entry->fTriggerBiasCorrectionMBToND);
+ collectionTriggerBiasMBToOnePart ->Add(entry->fTriggerBiasCorrectionMBToOnePart);
count++;
}
fTriggerBiasCorrectionMBToINEL ->Merge(collectionTriggerBiasMBToINEL);
fTriggerBiasCorrectionMBToNSD ->Merge(collectionTriggerBiasMBToNSD);
fTriggerBiasCorrectionMBToND ->Merge(collectionTriggerBiasMBToND);
+ fTriggerBiasCorrectionMBToOnePart->Merge(collectionTriggerBiasMBToOnePart);
delete collectionNtrackToNparticle;
delete collectionVertexReco;
delete collectionTriggerBiasMBToINEL;
delete collectionTriggerBiasMBToNSD;
delete collectionTriggerBiasMBToND;
+ delete collectionTriggerBiasMBToOnePart;
return count+1;
}
fTriggerBiasCorrectionMBToINEL ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionINEL(),c);
fTriggerBiasCorrectionMBToNSD ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionNSD() ,c);
fTriggerBiasCorrectionMBToND ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionND() ,c);
-
+ fTriggerBiasCorrectionMBToOnePart ->Add(aCorrectionsToAdd->GetTriggerBiasCorrectionOnePart() ,c);
+}
+
+//____________________________________________________________________
+void AlidNdEtaCorrection::Scale(Float_t c)
+{
+ //
+ // scales all contained corrections
+ //
+
+ fTrack2ParticleCorrection ->Scale(c);
+ fVertexRecoCorrection ->Scale(c);
+ fTriggerBiasCorrectionMBToINEL ->Scale(c);
+ fTriggerBiasCorrectionMBToNSD ->Scale(c);
+ fTriggerBiasCorrectionMBToND ->Scale(c);
+ fTriggerBiasCorrectionMBToOnePart ->Scale(c);
}
//____________________________________________________________________
fTriggerBiasCorrectionMBToINEL ->Reset();
fTriggerBiasCorrectionMBToNSD ->Reset();
fTriggerBiasCorrectionMBToND ->Reset();
-
+ fTriggerBiasCorrectionMBToOnePart ->Reset();
}
fTriggerBiasCorrectionMBToINEL ->LoadHistograms();
fTriggerBiasCorrectionMBToNSD ->LoadHistograms();
fTriggerBiasCorrectionMBToND ->LoadHistograms();
+ fTriggerBiasCorrectionMBToOnePart ->LoadHistograms();
gDirectory->cd("..");
fTriggerBiasCorrectionMBToINEL->SaveHistograms();
fTriggerBiasCorrectionMBToNSD ->SaveHistograms();
fTriggerBiasCorrectionMBToND ->SaveHistograms();
+ fTriggerBiasCorrectionMBToOnePart->SaveHistograms();
gDirectory->cd("..");
}
fTriggerBiasCorrectionMBToINEL->DrawHistograms();
fTriggerBiasCorrectionMBToNSD ->DrawHistograms();
fTriggerBiasCorrectionMBToND ->DrawHistograms();
+ fTriggerBiasCorrectionMBToOnePart ->DrawHistograms();
}
//____________________________________________________________________
fTriggerBiasCorrectionMBToINEL->DrawOverview(canvasName);
fTriggerBiasCorrectionMBToNSD ->DrawOverview(canvasName);
fTriggerBiasCorrectionMBToND ->DrawOverview(canvasName);
+ fTriggerBiasCorrectionMBToOnePart ->DrawOverview(canvasName);
}
//____________________________________________________________________
fTriggerBiasCorrectionMBToINEL->GetTrackCorrection()->FillGene(vtx, eta, pt);
- if (processType != 92 && processType != 93)
+ if ((processType & AliPWG0Helper::kSD) == 0)
fTriggerBiasCorrectionMBToNSD->GetTrackCorrection()->FillGene(vtx, eta, pt);
- if (processType!=92 && processType!=93 && processType!=94)
+ if (processType & AliPWG0Helper::kND )
fTriggerBiasCorrectionMBToND->GetTrackCorrection()->FillGene(vtx, eta, pt);
+ if (processType & AliPWG0Helper::kOnePart)
+ fTriggerBiasCorrectionMBToOnePart->GetTrackCorrection()->FillGene(vtx, eta, pt);
+
if (!trigger)
return;
fTriggerBiasCorrectionMBToINEL->GetTrackCorrection()->FillMeas(vtx, eta, pt);
fTriggerBiasCorrectionMBToNSD->GetTrackCorrection()->FillMeas(vtx, eta, pt);
fTriggerBiasCorrectionMBToND->GetTrackCorrection()->FillMeas(vtx, eta, pt);
+ fTriggerBiasCorrectionMBToOnePart->GetTrackCorrection()->FillMeas(vtx, eta, pt);
fVertexRecoCorrection->GetTrackCorrection()->FillGene(vtx, eta, pt);
if (!vertex)
}
//____________________________________________________________________
-void AlidNdEtaCorrection::FillTrackedParticle(Float_t vtx, Float_t eta, Float_t pt)
+void AlidNdEtaCorrection::FillTrackedParticle(Float_t vtx, Float_t eta, Float_t pt, Double_t weight)
{
// fills a tracked particle in the corrections
- fTrack2ParticleCorrection->GetTrackCorrection()->FillMeas(vtx, eta, pt);
+ fTrack2ParticleCorrection->GetTrackCorrection()->FillMeas(vtx, eta, pt, weight);
}
//____________________________________________________________________
fTriggerBiasCorrectionMBToINEL->GetEventCorrection()->FillGene(vtx, n);
- if (processType != 92 && processType != 93)
+ if ((processType & AliPWG0Helper::kSD) == 0)
fTriggerBiasCorrectionMBToNSD->GetEventCorrection()->FillGene(vtx, n);
- if (processType!=92 && processType!=93 && processType!=94)
+ if (processType & AliPWG0Helper::kND )
fTriggerBiasCorrectionMBToND->GetEventCorrection()->FillGene(vtx, n);
+ if (processType & AliPWG0Helper::kOnePart)
+ fTriggerBiasCorrectionMBToOnePart->GetEventCorrection()->FillGene(vtx, n);
+
if (!trigger)
return;
fTriggerBiasCorrectionMBToINEL->GetEventCorrection()->FillMeas(vtx, n);
fTriggerBiasCorrectionMBToNSD->GetEventCorrection()->FillMeas(vtx, n);
fTriggerBiasCorrectionMBToND->GetEventCorrection()->FillMeas(vtx, n);
+ fTriggerBiasCorrectionMBToOnePart->GetEventCorrection()->FillMeas(vtx, n);
fVertexRecoCorrection->GetEventCorrection()->FillGene(vtx, n);
if (!vertex)
}
//____________________________________________________________________
-Float_t AlidNdEtaCorrection::GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta, Bool_t debug)
+Float_t AlidNdEtaCorrection::GetMeasuredFraction(CorrectionType correctionType, Float_t ptCutOff, Float_t eta, Int_t vertexBegin, Int_t vertexEnd, Bool_t debug)
{
// calculates the fraction of particles measured (some are missed due to the pt cut off)
//
if (!GetCorrection(correctionType))
return -1;
- const TH3F* generated = GetCorrection(correctionType)->GetTrackCorrection()->GetGeneratedHistogram();
+ const TH3* generated = GetCorrection(correctionType)->GetTrackCorrection()->GetGeneratedHistogram();
// find eta borders, if eta is negative assume -0.8 ... 0.8
Int_t etaBegin = 0;
etaEnd = etaBegin;
}
- //Printf("AlidNdEtaCorrection::GetMeasuredFraction: Using vtx range of +- 10 cm");
- Int_t vertexBegin = generated->GetXaxis()->FindBin(-9.99);
- Int_t vertexEnd = generated->GetXaxis()->FindBin(9.99);
+ if (vertexBegin == -1)
+ vertexBegin = generated->GetXaxis()->FindBin(-9.99);
+
+ if (vertexEnd == -1)
+ vertexEnd = generated->GetXaxis()->FindBin(9.99);
TH1D* ptProj = dynamic_cast<TH1D*> (generated->ProjectionZ(Form("%s_pt", generated->GetName()), vertexBegin, vertexEnd, etaBegin, etaEnd));
//printf("GetMeasuredFraction: bin range %d %d %d %d\n", vertexBegin, vertexEnd, etaBegin, etaEnd);
Int_t ptBin = ptProj->FindBin(ptCutOff);
//printf("GetMeasuredFraction: bin range %d %d\n", ptBin, ptProj->GetNbinsX());
- Float_t abovePtCut = ptProj->Integral(ptBin, ptProj->GetNbinsX());
- Float_t all = ptProj->Integral();
+ Float_t abovePtCut = ptProj->Integral(ptBin, ptProj->GetNbinsX()+1);
+ Float_t all = ptProj->Integral(1, ptProj->GetNbinsX()+1);
if (all == 0)
return -1;
if (!GetCorrection(correctionType))
return 0;
- const TH2F* generated = GetCorrection(correctionType)->GetEventCorrection()->GetGeneratedHistogram();
+ const TH2* generated = GetCorrection(correctionType)->GetEventCorrection()->GetGeneratedHistogram();
TH1* allEvents = generated->ProjectionX(Form("%s_all", generated->GetName()), 1, generated->GetNbinsY());
TH1* aboveEvents = generated->ProjectionX(Form("%s_above", generated->GetName()), generated->GetYaxis()->FindBin(multCut), generated->GetNbinsY());
fTriggerBiasCorrectionMBToINEL ->ReduceInformation();
fTriggerBiasCorrectionMBToNSD ->ReduceInformation();
fTriggerBiasCorrectionMBToND ->ReduceInformation();
+ fTriggerBiasCorrectionMBToOnePart ->ReduceInformation();
}
//____________________________________________________________________
case kINEL : return fTriggerBiasCorrectionMBToINEL;
case kNSD : return fTriggerBiasCorrectionMBToNSD;
case kND : return fTriggerBiasCorrectionMBToND;
+ case kOnePart : return fTriggerBiasCorrectionMBToOnePart;
}
return 0;