1 #ifndef DNDETAANALYSIS_C
2 #define DNDETAANALYSIS_C
7 # include <TParticle.h>
8 # include <TObjArray.h>
39 "Charged particle pseudo-rapidity density",
40 nEta, -maxEta, +maxEta);
42 eta->SetXTitle(
"#it{#eta}");
43 eta->SetYTitle(
"1/N d#it{N}_{ch}/d#it{#eta}");
44 eta->SetMarkerColor(kRed+2);
45 eta->SetMarkerStyle(20);
59 Info(
"SlaveBegin",
"Making dN/deta histogram");
61 fdNdeta->SetMarkerColor(kBlack);
75 Double_t theta = TMath::ATan2(pT, pZ);
76 Double_t eta = (pT < 1e-10 ? 1024 : -TMath::Log(TMath::Tan(theta/2)));
77 if (TMath::Abs(eta) > 1000)
return false;
92 Warning(
"Terminate",
"No events selected");
98 Warning(
"Terminate",
"No dN/deta histogram found");
101 Printf(
"A total of %ld events",
fOK);
117 m1->SetUniqueID(0x8);
141 :
Base(verbose, monitor)
171 :
Base(verbose,monitor)
196 :
Base(verbose,monitor)
227 :
Base(verbose,monitor)
257 :
Base(verbose,monitor),
343 Printf(
"Centrality %6.2f-%6.2f (bin %4d) "
344 "Nch=%8.1f/%4.2f=%8.1f out=%s (%d)",
350 Int_t(out->GetBinContent(0)));
359 out->SetBinContent(0, out->GetBinContent(0)+1);
372 Warning(
"Terminate",
"No events selected");
381 if (!o->IsA()->InheritsFrom(TH1::Class()))
return 0;
382 TH1* h =
static_cast<TH1*
>(o);
383 Int_t m = h->GetBinContent(0);
385 ::Warning(
"Normalize",
"Different event count here:%d helper:%d",m,n);
386 h->SetBinContent(0,0);
387 h->Scale(1. / n,
"width");
402 m3->SetUniqueID(0x8);
440 Double_t bins[]={ 0, 3, 6, 9, 14, 19, 24, 29, 39, 49, 59, 69, 79, 89, 99};
474 if (t.EqualTo(
"INEL")) ret =
new dNdeta::INEL (verbose,monitor);
475 else if (t.EqualTo(
"NSD")) ret =
new dNdeta::NSD (verbose,monitor);
476 else if (t.EqualTo(
"INELGt0")) ret =
new dNdeta::INELGt0(verbose,monitor);
477 else if (t.EqualTo(
"V0AND")) ret =
new dNdeta::V0AND (verbose,monitor);
478 else if (t.BeginsWith(
"MULT") || t.BeginsWith(
"CENT")) {
480 if (!(w.BeginsWith(
"RefMult") ||
481 w.BeginsWith(
"ZNA") ||
482 w.BeginsWith(
"ZNC") ||
483 w.BeginsWith(
"ZPA") ||
484 w.BeginsWith(
"ZPC") ||
485 w.BeginsWith(
"V0M") ||
486 w.BeginsWith(
"V0A") ||
487 w.BeginsWith(
"V0C") ||
490 Printf(
"Warning: dNdetaMaker::Make: Unknown estimator: %s",
494 if (t.BeginsWith(
"MULT"))
501 TPair* tp =
static_cast<TPair*
>(uopt.FindObject(
"trig"));
502 if( tp) ret->
SetTrigger(tp->Value()->GetName());
505 Printf(
"Error: dNdetaMaker::Run: Invalid spec: %s", t.Data());
514 Printf(
" INEL - inelastic");
515 Printf(
" INELGt0 - inelastic with at least 1 particle in |eta|<1");
516 Printf(
" NSD - Non-single diffractive");
517 Printf(
" V0AND - Visible X-section");
518 Printf(
" CENT<est> - Centrality classes. <est> is one of ");
519 Printf(
" ZNA - ZNA signal");
520 Printf(
" ZNC - ZNC signal");
521 Printf(
" ZPA - ZPA signal");
522 Printf(
" ZPC - ZPC signal");
523 Printf(
" V0M - V0-A + -C");
524 Printf(
" V0A - V0-A");
525 Printf(
" V0C - V0-C");
530 const char*
Script()
const {
return __FILE__; }
538 #pragma link C++ nestedclasses;
539 #pragma link C++ namespace dNdeta;
TObject * GetOutputObject(const char *name, TClass *cls)
virtual Bool_t ProcessHeader()
virtual Bool_t ProcessParticle(const TParticle *p)
Bool_t CheckTrigger() const
Cent(const char *method="V0M", Bool_t verbose=true, Int_t monitor=0)
FastShortHeader * fHeader
virtual Bool_t SetupEstimator()
Bool_t Finalize(TCollection *output, Long_t minEvents, TH1 *(*callback)(TObject *, Int_t))
static TObject * CreateOutput()
This script defines classes for looping over the data produced by FastSim.C.
NSD(Bool_t verbose=false, Int_t monitor=0)
virtual Bool_t ProcessHeader()
virtual void Fill(Double_t eta)
dNdetaMaker * _dNdetaMaker
const char * Script() const
virtual void Clear(Option_t *option="")
virtual TList * GetMonitorObjects()
void SetCentAxis(Int_t n, Double_t low, Double_t high)
V0AND(Bool_t verbose=false, Int_t monitor=0)
virtual Bool_t SetupEstimator()
virtual void SlaveBegin(TTree *t)
static TH1 * Normalize(TObject *o, Int_t n)
static TH1D * CreatedNdeta()
virtual Bool_t ProcessHeader()
void Print(Option_t *option="") const
Base(Bool_t verbose=false, Int_t monitor=0)
void CreateHistos(TCollection *output, TObject *(*callback)())
virtual void Print(Option_t *option="") const
Double_t GetCentrality() const
virtual void ProcessParticles()
Mult(const char *method="RefMult00d80", Bool_t verbose=false, Int_t monitor=0)
INEL(Bool_t verbose=false, Int_t monitor=0)
void Print(Option_t *option="") const
virtual Bool_t ProcessHeader()
void CreateDiagnostics(TCollection *output, TH1 *centHist)
Int_t CheckCentrality(Double_t cent, Double_t mult, Double_t b, Double_t nPart, Double_t nBin)
virtual Bool_t ProcessHeader()
virtual void ProcessParticles()
INELGt0(Bool_t verbose=false, Int_t monitor=0)
FastAnalysis * Make(const TString &subtype, Int_t monitor, Bool_t verbose, TMap &uopt)
void SetTrigger(UInt_t mask)
virtual TList * GetMonitorObjects()
Maker(const char *type="")
virtual TH1 * CreateSingle()
virtual void SlaveBegin(TTree *)
virtual void Clear(Option_t *option="")