#include "AliEventTagCuts.h"
#include "AliTagAnalysis.h"
+#include <TMath.h>
+#include <TChain.h>
+#include <TGridResult.h>
+
ClassImp(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();
}
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)
void AliEventPoolOTF::Init()
{
//
- fTagAnalysis->ChainLocalTags(fTagDirectory);
- fMultiplicity = fMultMin;
+ 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;
+ 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;
}
}
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];
+}
+
+