X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliEventPoolOTF.cxx;h=7b8ab6af35ee671ade6ce57f94e06bf5133e2982;hb=f930b7bfa0dd243ab4a47448b32a48a17bff1abc;hp=c8d5e44cf207f72863fb53ffa062553ae7798a87;hpb=2d0a3a454d08b5d368a4cfdf9d0c47a9c39870c3;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliEventPoolOTF.cxx b/ANALYSIS/AliEventPoolOTF.cxx index c8d5e44cf20..7b8ab6af35e 100644 --- a/ANALYSIS/AliEventPoolOTF.cxx +++ b/ANALYSIS/AliEventPoolOTF.cxx @@ -29,6 +29,10 @@ #include "AliEventTagCuts.h" #include "AliTagAnalysis.h" +#include +#include +#include + ClassImp(AliEventPoolOTF) @@ -41,29 +45,41 @@ AliEventPoolOTF::AliEventPoolOTF(): fLHCCuts(0), fDetectorCuts(0), fEventCuts(0), + fGridTags(0), + fChain(0), fTagDirectory(0), - fMultMin(0), - fMultMax(0), - fMultStep(0), - fMultiplicity() + fValueMin(), + fValueMax(), + fValueStep(), + fValue(), + fBinNumber(0), + fNoMore(0) + { // Default constructor + InitArrays(); } AliEventPoolOTF::AliEventPoolOTF(const char* name, const char* title): AliVEventPool(name, title), - fTagAnalysis(new AliTagAnalysis("AOD")), + fTagAnalysis(new AliTagAnalysis(title)), fRunCuts(new AliRunTagCuts()), fLHCCuts(new AliLHCTagCuts()), fDetectorCuts(new AliDetectorTagCuts()), fEventCuts(new AliEventTagCuts()), + fGridTags(0), + fChain(0), fTagDirectory("."), - fMultMin(0), - fMultMax(0), - fMultStep(0), - fMultiplicity() + fValueMin(), + fValueMax(), + fValueStep(), + fValue(), + fBinNumber(0), + fNoMore(0) + { // Constructor + InitArrays(); } @@ -74,13 +90,30 @@ AliEventPoolOTF::AliEventPoolOTF(const AliEventPoolOTF& obj): fLHCCuts(0), fDetectorCuts(0), fEventCuts(0), + fGridTags(0), + fChain(0), fTagDirectory(0), - fMultMin(0), - fMultMax(0), - fMultStep(0), - fMultiplicity() + fValueMin(), + fValueMax(), + fValueStep(), + fValue(), + fBinNumber(0), + fNoMore(0) { // Copy constructor + InitArrays(); +} + + +AliEventPoolOTF::~AliEventPoolOTF() +{ + // Destructor + delete fTagAnalysis; + delete fRunCuts; + delete fEventCuts; + delete fLHCCuts; + delete fDetectorCuts; + delete fChain; } AliEventPoolOTF& AliEventPoolOTF::operator=(const AliEventPoolOTF& other) @@ -93,24 +126,60 @@ AliEventPoolOTF& AliEventPoolOTF::operator=(const AliEventPoolOTF& other) void AliEventPoolOTF::Init() { - // - fTagAnalysis->ChainLocalTags(fTagDirectory); - fMultiplicity = fMultMin; + // Initialisation + if (!fGridTags) { + fTagAnalysis->ChainLocalTags(fTagDirectory); + } else { + fTagAnalysis->ChainGridTags(fGridTags); + } + + + for (Int_t i = 0; i < 5; i++) fValue[i] = fValueMin[i]; } TChain* AliEventPoolOTF::GetNextChain() { - // - TChain* chain = 0; - - Int_t mmax = fMultiplicity + fMultStep; - if (mmax > fMultMax) { - return 0; + // Get Next Chain + if (fChain) { + delete fChain; + fChain = 0; + } + + fBinNumber++; + if (fNoMore) { + return 0; } else { - fEventCuts->SetMultiplicityRange(fMultiplicity, mmax); - chain = fTagAnalysis->QueryTags(fRunCuts, fLHCCuts, fDetectorCuts, fEventCuts); - fMultiplicity += fMultStep; - return chain; + printf("Current bin (lower) %13.3f %13.3f %13.3f %13.3f %13.3f \n", fValue[kMultiplicity], fValue[kZVertex], fValue[kEventPlane],fValue[kLeadingParticleEta],fValue[kLeadingParticlePhi]); + printf("Current bin (upper) %13.3f %13.3f %13.3f %13.3f %13.3f \n", fValue[kMultiplicity] + fValueStep[kMultiplicity] - 1, + fValue[kZVertex] + fValueStep[kZVertex], + fValue[kEventPlane] + fValueStep[kEventPlane], + fValue[kLeadingParticleEta] + fValueStep[kLeadingParticleEta], + fValue[kLeadingParticlePhi] + fValueStep[kLeadingParticlePhi] + + ); + + fEventCuts->SetMultiplicityRange(Int_t(fValue[kMultiplicity]) , Int_t(fValue[kMultiplicity] + fValueStep[kMultiplicity] - 1)); + fEventCuts->SetPrimaryVertexZRange(fValue[kZVertex] , fValue[kZVertex] + fValueStep[kZVertex]); + fEventCuts->SetEtaLeadingParticleRange(fValue[kLeadingParticleEta] , fValue[kLeadingParticleEta] + fValueStep[kLeadingParticleEta]); + fEventCuts->SetPhiLeadingParticleRange(fValue[kLeadingParticlePhi] , fValue[kLeadingParticlePhi] + fValueStep[kLeadingParticlePhi]); + fEventCuts->SetEventPlaneAngleRange(fValue[kEventPlane] , fValue[kEventPlane] + fValueStep[kEventPlane]); + + fChain = fTagAnalysis->QueryTags(fRunCuts, fLHCCuts, fDetectorCuts, fEventCuts); +// +// Next bin +// + for (Int_t i = 5; i >= 0; i--) + { + fValue[i] += fValueStep[i]; + if (i > 0 && fValue[i] >= fValueMax[i]) { + fValue[i] = fValueMin[i]; + } else if (i == 0 && fValue[i] >= fValueMax[i]) { + fNoMore = kTRUE; + } else { + break; + } + } + return fChain; } } @@ -122,6 +191,19 @@ void AliEventPoolOTF::GetCurrentBin(Float_t* /*bin*/) Int_t AliEventPoolOTF::GetDimension() { // - return (1); + return (5); +} + +void AliEventPoolOTF::InitArrays() +{ + // Initializes the pool axis + + SetMultiplicityBinning(0, 20000, 20000); + SetZVertexBinning(-1000., 1000., 2000.); + SetEventPlaneBinning(-1000., 1000., 2000.); + SetLeadingParticleEtaBinning(-13.0, 13.0, 27.); + SetLeadingParticlePhiBinning(0., 2*(TMath::Pi()),2*(TMath::Pi())); + for (Int_t i = 0; i < 5; i++) fValue[i] = fValueMin[i]; } +