#include <iostream>
#include <TMath.h>
#include <TObjString.h>
-
+#include <TObjArray.h>
+#include "AliLog.h"
ClassImp(AliAODForwardMult)
#ifdef DOXY_INPUT
; // For Emacs
fHist(),
fTriggers(0),
fIpZ(fgkInvalidIpZ),
- fCentrality(-1)
+ fCentrality(-1),
+ fNClusters(0)
{
//
// Constructor
200, -4, 6, 20, 0, 2*TMath::Pi()),
fTriggers(0),
fIpZ(fgkInvalidIpZ),
- fCentrality(-1)
+ fCentrality(-1),
+ fNClusters(0)
{
//
// Constructor
// option Passed to TH1::Reset
//
fHist.Reset(option);
- fTriggers = 0;
- fIpZ = fgkInvalidIpZ;
+ fTriggers = 0;
+ fIpZ = fgkInvalidIpZ;
+ fNClusters = 0;
}
//____________________________________________________________________
void
static TObjString ipz;
static TObjString trg;
static TObjString cnt;
+ static TObjString ncl;
ipz = Form("ip_z=%fcm", fIpZ);
trg = GetTriggerString(fTriggers);
cnt = Form("%+6.1f%%", fCentrality);
+ ncl = Form("%d clusters", fNClusters);
b->Add(&fHist);
b->Add(&ipz);
b->Add(&trg);
b->Add(&cnt);
+ b->Add(&ncl);
}
//____________________________________________________________________
if ((mask & kC) != 0x0) trg.Append("C ");
if ((mask & kE) != 0x0) trg.Append("E ");
if ((mask & kMCNSD) != 0x0) trg.Append("MCNSD ");
+ if ((mask & kNClusterGt0) != 0x0) trg.Append("NCluster>0 ");
return trg.Data();
}
ret->GetXaxis()->SetBinLabel(kBinNSD, "NSD");
ret->GetXaxis()->SetBinLabel(kBinMCNSD, "NSD (MC truth)");
ret->GetXaxis()->SetBinLabel(kBinPileUp, "w/Pileup");
+ ret->GetXaxis()->SetBinLabel(kBinOffline, "w/Offline");
+ ret->GetXaxis()->SetBinLabel(kBinNClusterGt0, "w/N_{cluster}>1");
ret->GetXaxis()->SetBinLabel(kWithVertex, "w/Vertex");
ret->GetXaxis()->SetBinLabel(kWithTrigger, "w/Selected trigger");
ret->GetXaxis()->SetBinLabel(kAccepted, "Accepted by cut");
return ret;
}
+//____________________________________________________________________
+UInt_t
+AliAODForwardMult::MakeTriggerMask(const char* what)
+{
+ UShort_t trgMask = 0;
+ TString trgs(what);
+ trgs.ToUpper();
+ TObjString* trg;
+ TIter next(trgs.Tokenize(" ,|"));
+ while ((trg = static_cast<TObjString*>(next()))) {
+ TString s(trg->GetString());
+ if (s.IsNull()) continue;
+ if (s.CompareTo("INEL") == 0) trgMask |= AliAODForwardMult::kInel;
+ else if (s.CompareTo("INEL>0")== 0) trgMask |= AliAODForwardMult::kInelGt0;
+ else if (s.CompareTo("NSD") == 0) trgMask |= AliAODForwardMult::kNSD;
+ else if (s.CompareTo("MCNSD") == 0) trgMask |= AliAODForwardMult::kMCNSD;
+ else if (s.CompareTo("B") == 0) trgMask |= AliAODForwardMult::kB;
+ else if (s.CompareTo("A") == 0) trgMask |= AliAODForwardMult::kA;
+ else if (s.CompareTo("C") == 0) trgMask |= AliAODForwardMult::kC;
+ else if (s.CompareTo("E") == 0) trgMask |= AliAODForwardMult::kE;
+ else if (s.CompareTo("NCLUSTER>0") == 0)
+ trgMask |= AliAODForwardMult::kNClusterGt0;
+ else
+ AliWarningGeneral("MakeTriggerMask",
+ Form("Unknown trigger %s", s.Data()));
+ }
+ return trgMask;
+}
//____________________________________________________________________
Bool_t
if (hist) {
hist->AddBinContent(kBinAll);
- if (IsTriggerBits(kB)) hist->AddBinContent(kBinB);
- if (IsTriggerBits(kA)) hist->AddBinContent(kBinA);
- if (IsTriggerBits(kC)) hist->AddBinContent(kBinC);
- if (IsTriggerBits(kE)) hist->AddBinContent(kBinE);
- if (IsTriggerBits(kInel)) hist->AddBinContent(kBinInel);
- if (IsTriggerBits(kInelGt0)) hist->AddBinContent(kBinInelGt0);
- if (IsTriggerBits(kNSD)) hist->AddBinContent(kBinNSD);
- if (IsTriggerBits(kPileUp)) hist->AddBinContent(kBinPileUp);
- if (IsTriggerBits(kMCNSD)) hist->AddBinContent(kBinMCNSD);
+ if (IsTriggerBits(kB|triggerMask)) hist->AddBinContent(kBinB);
+ if (IsTriggerBits(kA|triggerMask)) hist->AddBinContent(kBinA);
+ if (IsTriggerBits(kC|triggerMask)) hist->AddBinContent(kBinC);
+ if (IsTriggerBits(kE|triggerMask)) hist->AddBinContent(kBinE);
+ if (IsTriggerBits(kB|kInel)) hist->AddBinContent(kBinInel);
+ if (IsTriggerBits(kB|kInelGt0)) hist->AddBinContent(kBinInelGt0);
+ if (IsTriggerBits(kB|kNSD)) hist->AddBinContent(kBinNSD);
+ if (IsTriggerBits(kPileUp)) hist->AddBinContent(kBinPileUp);
+ if (IsTriggerBits(kMCNSD)) hist->AddBinContent(kBinMCNSD);
+ if (IsTriggerBits(kOffline)) hist->AddBinContent(kBinOffline);
+ if (IsTriggerBits(kNClusterGt0)) hist->AddBinContent(kBinNClusterGt0);
}
// Check if we have an event of interest.
- if (!IsTriggerBits(triggerMask)) return false;
+ Int_t mask = triggerMask; //|kB
+ if (!IsTriggerBits(mask)) return false;
// Check for pileup
if (IsTriggerBits(kPileUp)) return false;
if (hist) hist->AddBinContent(kWithTrigger);
// Check that we have a valid vertex
- if (!HasIpZ()) return false;
+ if (vzMin < vzMax && !HasIpZ()) return false;
if (hist) hist->AddBinContent(kWithVertex);
// Check that vertex is within cuts
- if (!InRange(vzMin, vzMax)) return false;
+ if (vzMin < vzMax && !InRange(vzMin, vzMax)) return false;
if (hist) hist->AddBinContent(kAccepted);
return true;