#include "multiplicity/AliMultiplicityCorrection.h"
#include "AliCorrection.h"
#include "AliCorrectionMatrix3D.h"
+#include "AliTriggerAnalysis.h"
ClassImp(AliMultiplicityTask)
AliAnalysisTask("AliMultiplicityTask", ""),
fESD(0),
fOption(opt),
- fAnalysisMode(AliPWG0Helper::kSPD),
- fTrigger(AliPWG0Helper::kMB1),
+ fAnalysisMode((AliPWG0Helper::AnalysisMode) (AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn)),
+ fTrigger(AliTriggerAnalysis::kMB1),
fDeltaPhiCut(-1),
fReadMC(kFALSE),
fUseMCVertex(kFALSE),
tree->SetBranchStatus("AliESDHeader*", 1);
tree->SetBranchStatus("*Vertex*", 1);
- if (fAnalysisMode == AliPWG0Helper::kSPD) {
+ if (fAnalysisMode & AliPWG0Helper::kSPD) {
tree->SetBranchStatus("AliMultiplicity*", 1);
}
- if (fAnalysisMode == AliPWG0Helper::kTPC || fAnalysisMode == AliPWG0Helper::kTPCITS) {
+ if (fAnalysisMode & AliPWG0Helper::kTPC || fAnalysisMode & AliPWG0Helper::kTPCITS) {
//AliESDtrackCuts::EnableNeededBranches(tree);
tree->SetBranchStatus("Tracks*", 1);
}
return;
}
- Bool_t eventTriggered = AliPWG0Helper::IsEventTriggered(fESD, fTrigger);
+ static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;
+ Bool_t eventTriggered = triggerAnalysis->IsTriggerFired(fESD, fTrigger);
+ //Printf("%lld", fESD->GetTriggerMask());
const AliESDVertex* vtxESD = AliPWG0Helper::GetVertex(fESD, fAnalysisMode);
Bool_t eventVertex = (vtxESD != 0);
Int_t inputCount = 0;
Int_t* labelArr = 0;
Float_t* etaArr = 0;
- if (fAnalysisMode == AliPWG0Helper::kSPD)
+ if (fAnalysisMode & AliPWG0Helper::kSPD)
{
// get tracklets
const AliMultiplicity* mult = fESD->GetMultiplicity();
++inputCount;
}
}
- else if (fAnalysisMode == AliPWG0Helper::kTPC || fAnalysisMode == AliPWG0Helper::kTPCITS)
+ else if (fAnalysisMode & AliPWG0Helper::kTPC || fAnalysisMode & AliPWG0Helper::kTPCITS)
{
if (!fEsdTrackCuts)
{
if (vtxESD)
{
// get multiplicity from ESD tracks
- TObjArray* list = fEsdTrackCuts->GetAcceptedTracks(fESD, (fAnalysisMode == AliPWG0Helper::kTPC));
+ TObjArray* list = fEsdTrackCuts->GetAcceptedTracks(fESD, (fAnalysisMode & AliPWG0Helper::kTPC));
Int_t nGoodTracks = list->GetEntries();
labelArr = new Int_t[nGoodTracks];
}
// eta range for nMCTracksSpecies, nESDTracksSpecies
- Float_t etaRange = -1;
- switch (fAnalysisMode) {
- case AliPWG0Helper::kInvalid: break;
- case AliPWG0Helper::kTPC:
- case AliPWG0Helper::kTPCITS:
- etaRange = 1.0; break;
- case AliPWG0Helper::kSPD: etaRange = 1.0; break;
- }
+ Float_t etaRange = 1.0;
+// switch (fAnalysisMode) {
+// case AliPWG0Helper::kInvalid: break;
+// case AliPWG0Helper::kTPC:
+// case AliPWG0Helper::kTPCITS:
+// etaRange = 1.0; break;
+// case AliPWG0Helper::kSPD: etaRange = 1.0; break;
+// default: break;
+// }
if (!fReadMC) // Processing of ESD information
{
{
Int_t nESDTracks05 = 0;
Int_t nESDTracks10 = 0;
- Int_t nESDTracks15 = 0;
- Int_t nESDTracks20 = 0;
+ Int_t nESDTracks14 = 0;
for (Int_t i=0; i<inputCount; ++i)
{
if (TMath::Abs(eta) < 1.0)
nESDTracks10++;
- if (TMath::Abs(eta) < 1.5)
- nESDTracks15++;
-
- if (TMath::Abs(eta) < 2.0)
- nESDTracks20++;
+ if (TMath::Abs(eta) < 1.4)
+ nESDTracks14++;
}
- fMultiplicity->FillMeasured(vtx[2], nESDTracks05, nESDTracks10, nESDTracks15, nESDTracks20);
+ fMultiplicity->FillMeasured(vtx[2], nESDTracks05, nESDTracks10, nESDTracks14);
}
}
else if (fReadMC) // Processing of MC information
// tracks in different eta ranges
Int_t nMCTracks05 = 0;
Int_t nMCTracks10 = 0;
- Int_t nMCTracks15 = 0;
- Int_t nMCTracks20 = 0;
+ Int_t nMCTracks14 = 0;
Int_t nMCTracksAll = 0;
// tracks per particle species, in |eta| < 2 (systematic study)
if (TMath::Abs(particle->Eta()) < 1.0)
nMCTracks10 += particleWeight;
- if (TMath::Abs(particle->Eta()) < 1.5)
- nMCTracks15 += particleWeight;
-
- if (TMath::Abs(particle->Eta()) < 2.0)
- nMCTracks20 += particleWeight;
+ if (TMath::Abs(particle->Eta()) < 1.4)
+ nMCTracks14 += particleWeight;
nMCTracksAll += particleWeight;
}
} // end of mc particle
- fMultiplicity->FillGenerated(vtxMC[2], eventTriggered, eventVertex, processType, (Int_t) nMCTracks05, (Int_t) nMCTracks10, (Int_t) nMCTracks15, (Int_t) nMCTracks20, (Int_t) nMCTracksAll);
+ fMultiplicity->FillGenerated(vtxMC[2], eventTriggered, eventVertex, processType, (Int_t) nMCTracks05, (Int_t) nMCTracks10, (Int_t) nMCTracks14, (Int_t) nMCTracksAll);
if (eventTriggered && eventVertex)
{
Int_t nESDTracks05 = 0;
Int_t nESDTracks10 = 0;
- Int_t nESDTracks15 = 0;
- Int_t nESDTracks20 = 0;
+ Int_t nESDTracks14 = 0;
// tracks per particle species, in |eta| < 2 (systematic study)
Int_t nESDTracksSpecies[7]; // (pi, K, p, other, nolabel, doublecount_prim, doublecount_all)
if (TMath::Abs(eta) < 1.0)
nESDTracks10 += particleWeight;
- if (TMath::Abs(eta) < 1.5)
- nESDTracks15 += particleWeight;
-
- if (TMath::Abs(eta) < 2.0)
- nESDTracks20 += particleWeight;
-
+ if (TMath::Abs(eta) < 1.4)
+ nESDTracks14 += particleWeight;
if (fParticleSpecies)
{
// if the particle decays/stops before this radius we do not see it
// 8cm larger than SPD layer 2
// 123cm TPC radius where a track has about 50 clusters (cut limit)
- const Float_t endRadius = (fAnalysisMode == AliPWG0Helper::kSPD) ? 8. : 123;
+ const Float_t endRadius = (fAnalysisMode & AliPWG0Helper::kSPD) ? 8. : 123;
// loop over all primaries that have not been found
for (Int_t i=0; i<nPrim; i++)
delete[] foundPrimaries;
delete[] foundPrimaries2;
- if ((Int_t) nMCTracks15 > 10 && nESDTracks15 <= 3)
+ if ((Int_t) nMCTracks14 > 10 && nESDTracks14 <= 3)
{
TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
- printf("WARNING: Event %lld %s (vtx-z = %f, recon: %f, contrib: %d, res: %f) has %d generated and %d reconstructed...\n", tree->GetReadEntry(), tree->GetCurrentFile()->GetName(), vtxMC[2], vtx[2], vtxESD->GetNContributors(), vtxESD->GetZRes(), nMCTracks15, nESDTracks15);
+ printf("WARNING: Event %lld %s (vtx-z = %f, recon: %f, contrib: %d, res: %f) has %d generated and %d reconstructed...\n", tree->GetReadEntry(), tree->GetCurrentFile()->GetName(), vtxMC[2], vtx[2], vtxESD->GetNContributors(), vtxESD->GetZRes(), nMCTracks14, nESDTracks14);
}
// fill response matrix using vtxMC (best guess)
- fMultiplicity->FillCorrection(vtxMC[2], nMCTracks05, nMCTracks10, nMCTracks15, nMCTracks20, nMCTracksAll, nESDTracks05, nESDTracks10, nESDTracks15, nESDTracks20);
+ fMultiplicity->FillCorrection(vtxMC[2], nMCTracks05, nMCTracks10, nMCTracks14, nMCTracksAll, nESDTracks05, nESDTracks10, nESDTracks14);
- fMultiplicity->FillMeasured(vtx[2], nESDTracks05, nESDTracks10, nESDTracks15, nESDTracks20);
+ fMultiplicity->FillMeasured(vtx[2], nESDTracks05, nESDTracks10, nESDTracks14);
if (fParticleSpecies)
fParticleSpecies->Fill(vtxMC[2], nMCTracksSpecies[0], nMCTracksSpecies[1], nMCTracksSpecies[2], nMCTracksSpecies[3], nESDTracksSpecies[0], nESDTracksSpecies[1], nESDTracksSpecies[2], nESDTracksSpecies[3], nESDTracksSpecies[4], nESDTracksSpecies[5], nESDTracksSpecies[6]);
file->Close();
- Printf("Writting result to multiplicity.root");
+ Printf("Written result to multiplicity.root");
}