ROOT logo
AliRoot » PWGLF » FORWARD » ANALYSIS2 » AliFMDEventInspector

class AliFMDEventInspector: public TNamed

Function Members (Methods)

public:
AliFMDEventInspector()
AliFMDEventInspector(const char* name)
virtual~AliFMDEventInspector()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
static const char*CodeString(UInt_t mask)
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
voidCreateOutputObjects(TList* dir)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
Bool_tFetchHistograms(const TList* d, TH1I*& hEventsTr, TH1I*& hEventsTrVtx, TH1I*& hEventsAcc, TH1I*& hTriggers) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
UShort_tGetCollisionSystem() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
UShort_tGetEnergy() const
Short_tGetField() const
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Char_tGetProductionPeriod() const
Short_tGetProductionRevision() const
Short_tGetProductionYear() const
ULong_tGetRunNumber() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsMC() const
Bool_tTObject::IsOnHeap() const
Bool_tIsProductionMC() const
virtual Bool_tTNamed::IsSortable() const
Bool_tIsUseDisplacedVertices() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
UInt_tProcess(const AliESDEvent* event, UInt_t& triggers, Bool_t& lowFlux, UShort_t& ivz, TVector3& ip, Double_t& cent, UShort_t& nClusters)
virtual Int_tTObject::Read(const char* name)
Bool_tReadRunDetails(const AliESDEvent* esd)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCentralityMethod(const TString& m)
voidSetCentralityMethod(AliFMDEventInspector::ECentMethod m)
voidSetDebug(Int_t dbg = 1)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetLowFluxCut(Int_t c)
voidSetMaxCentrality(Double_t maxcent = -1.0)
voidSetMaxVzErr(Double_t c = 0.1)
voidSetMC(Bool_t isMC = true)
voidSetMinCentrality(Double_t mincent = -1.0)
voidSetMinPileupContributors(UShort_t nContrib = 3)
voidSetMinPileupDistance(Double_t cm = 0.8)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetpA2012Vtx(Bool_t use)
voidSetPileupFlags(UShort_t flags = 0x5)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidSetupForData(const TAxis& vtxAxis)
voidSetUseDisplacedVertices(Bool_t use = true)
voidSetUseFirstPhysicsVtx(Bool_t use)
voidSetUseV0AndForNSD(Bool_t use = true)
voidSetVertexMethod(AliFMDEventInspector::EVtxType t)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStoreInformation()
virtual voidStoreProduction()
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
AliFMDEventInspector(const AliFMDEventInspector& o)
Bool_tAllowDisplaced() const
voidCacheConfiguredTriggerClasses(TList& cache, const TList* classes, AliOADBPhysicsSelection* o)
virtual Bool_tCheckCosmics(const TString& trigStri) const
virtual Bool_tCheckEmpty(const TString& trigStr, UInt_t& triggers) const
virtual Bool_tCheckFastPartition(bool fastonly) const
virtual Bool_tCheckINELGT0(const AliESDEvent& esd, UShort_t& nClusters, UInt_t& triggers) const
virtual Bool_tCheckMultiVertex(const AliESDEvent& esd, Bool_t checkOtherBC = false) const
virtual Bool_tCheckNSD(const AliESDEvent& esd, UInt_t& triggers) const
virtual AliFMDEventInspector::EVtxStatusCheckpA2012Vertex(const AliESDEvent& esd, TVector3& ip) const
virtual AliFMDEventInspector::EVtxStatusCheckpA2013Vertex(const AliESDEvent& esd, TVector3& ip) const
Bool_tCheckpAExtraV0(const AliESDEvent& esd) const
virtual Bool_tCheckPileup(const AliESDEvent& esd, UInt_t& triggers) const
virtual AliFMDEventInspector::EVtxStatusCheckPWGUDVertex(const AliESDEvent& esd, TVector3& ip) const
virtual AliFMDEventInspector::EVtxStatusCheckVertex(const AliESDEvent& esd, TVector3& ip) const
virtual Bool_tCheckWords(const AliESDEvent& esd, UInt_t& triggers) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
AliFMDEventInspector&operator=(const AliFMDEventInspector& o)
virtual Bool_tReadCentrality(const AliESDEvent& esd, Double_t& cent, UShort_t& qual) const
Bool_tReadTriggers(const AliESDEvent& esd, UInt_t& triggers, UShort_t& nClusters)
Bool_tReadVertex(const AliESDEvent& esd, TVector3& ip)

Data Members

public:
enum ECodes { kOk
kNoEvent
kNoTriggers
kNoSPD
kNoFMD
kNoVertex
kBadVertex
};
enum ETrgBins { kInel
kInelGt0
kNSD
kV0AND
kEmpty
kA
kB
kC
kE
kPileUp
kMCNSD
kSatellite
kSpdOutlier
kOffline
};
enum EVtxType { kNormal
kpA2012
kpA2013
kPWGUD
kDisplaced
};
enum EPileupType { kSPD
kTracks
kOutOfBunch
};
enum ECentMethod { kV0Multiplicity
kV0Amplitude
kV0Charge
kFMDRough
kNTracks
kLTracks
kCL0
kCL1
kCND
kNParticles
kNeutrons
kV0vsFMD
kV0vsNTracks
kZEMvsZDC
kDefaultCent
};
enum ECollisionSystem { kUnknown
kPP
kPbPb
};
enum EVtxStatus { kVtxOK
kNoVtx
kNoSPDVtx
kFewContrib
kUncertain
kNotVtxZ
};
enum ETrgStatus { kNoTrgWords
kPP2760Fast
kMUON
kTriggered
kMinBias
kMinBiasNoSPD
kV0AndTrg
kHighMult
kCentral
kSemiCentral
kDiffractive
kUser
kOther
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
static const char*fgkFolderName
protected:
TListfBgWords! Configured background words
TAxis*fCentAxisCentrality axis used in histograms
TStringfCentMethodCentrality method
TListfCollWords! Configured collision words
UShort_tfCollisionSystemCollision system
Int_tfDebugDebug level
AliDisplacedVertexSelectionfDisplacedVertexDisplaced vertex selector
UShort_tfEnergyCMS energy (per nucleon pair) [GeV]
Short_tfFieldL3 magnetic field [kG]
TH1F*fHCent! Centrality
TH2F*fHCentVsQual! Centrality vs quality
TH1I*fHEventsAccepted! Events w/trigger and vertex in range
TH2D*fHEventsAcceptedXY! XY vtx with trigger and Z vertex in range
TH1I*fHEventsTr! Histogram of events w/trigger
TH1I*fHEventsTrVtx! Events w/trigger and vertex
TH1I*fHPileup! Pile-up status
TH1I*fHStatus! Event processing status
TH1I*fHTrgStatus! Trigger processing status
TH2I*fHTriggerCorr! Correlation of triggers
TH1I*fHTriggers! Triggers
TH1I*fHType! Type (low/high flux) of event
TH1I*fHVtxStatus! Vertex processing status
TH1I*fHWords! Trigger words
TList*fList! Histogram container
Int_tfLowFluxCutLow flux cut
Bool_tfMCIs this MC input
Double_tfMaxCentmax centrailty
Double_tfMaxVzErrMaximum error on v_z
Double_tfMinCentmin centrality
UShort_tfMinPileupContribMin contributors to 2nd pile-up IP
Double_tfMinPileupDistanceMin distance of 2nd pile-up IP
TStringTNamed::fNameobject identifier
UShort_tfPileupFlagsWhich pileups to use
Char_tfProdLetterProduction letter
Bool_tfProdMCTrue if anchor production
Short_tfProdPassPass number
Int_tfProdSVNAliROOT revision used in production
Short_tfProdYearProduction year
ULong_tfRunNumberCurrent run number
TStringTNamed::fTitleobject title
Bool_tfUseV0ANDUse the vtx code from p+p first physics
TAxisfVtxAxisIP_z Axis
AliFMDEventInspector::EVtxTypefVtxMethodVertex method to use

Class Charts

Inheritance Chart:
TNamed
AliFMDEventInspector
AliFMDMCEventInspector

Function documentation

AliFMDEventInspector()
 fUseFirstPhysicsVertex(false),
 fUseDisplacedVertices(false),
 fUsepA2012Vertex(false),

 Constructor

AliFMDEventInspector(const char* name)
 fUseFirstPhysicsVertex(false),
 fUseDisplacedVertices(false),
 fUsepA2012Vertex(false),

 Constructor

 Parameters:
   name Name of object

~AliFMDEventInspector()
 Destructor

SetCentralityMethod(ECentMethod m)
SetMinCentrality(Double_t mincent = -1.0)
SetMaxCentrality(Double_t maxcent = -1.0)
FetchHistograms(const TList* d, TH1I*& hEventsTr, TH1I*& hEventsTrVtx, TH1I*& hEventsAcc, TH1I*& hTriggers) const
 Fetch our histograms from the passed list

 Parameters:
   d             Input
   hEventsTr     On return, pointer to histogram, or null
   hEventsTrVtx  On return, pointer to histogram, or null
   hTriggers     On return, pointer to histogram, or null

 Return:
    true on success, false otherwise

CacheConfiguredTriggerClasses(TList& cache, const TList* classes, AliOADBPhysicsSelection* o)
SetupForData(const TAxis& vtxAxis)
 Initialize the object - this is called on the first seen event.

 Parameters:
   vtxAxis Vertex axis in use

StoreInformation()
 Write TNamed objects to output list containing information about
 the running conditions
StoreProduction()
CreateOutputObjects(TList* dir)
 Define the output histograms.  These are put in a sub list of the
 passed list.   The histograms are merged before the parent task calls
 AliAnalysisTaskSE::Terminate

   dir Directory to add to

Process(const AliESDEvent* event, UInt_t& triggers, Bool_t& lowFlux, UShort_t& ivz, TVector3& ip, Double_t& cent, UShort_t& nClusters)
 Process the event

 Parameters:
   event     Input event
   triggers  On return, the triggers fired
   lowFlux   On return, true if the event is considered a low-flux
                  event (according to the setting of fLowFluxCut)
   ivz       On return, the found vertex bin (1-based).  A zero
                  means outside of the defined vertex range
   vz        On return, the z position of the interaction
   cent      On return, the centrality - if not available < 0

 Return:
    0 (or kOk) on success, otherwise a bit mask of error codes

ReadCentrality(const AliESDEvent& esd, Double_t& cent, UShort_t& qual) const
 Read centrality from event

 Parameters:
    esd  Event
    cent On return, the centrality or negative if not found

 Return:
    False on error, true otherwise

CheckpAExtraV0(const AliESDEvent& esd) const
ReadTriggers(const AliESDEvent& esd, UInt_t& triggers, UShort_t& nClusters)
 Read the trigger information from the ESD event

 Parameters:
   esd        ESD event
   triggers   On return, contains the trigger bits

 Return:
    @c true on success, @c false otherwise

CheckFastPartition(bool fastonly) const
 For the 2.76 TeV p+p run (LHC11a), the FMD ran in the slow partition
 so it received no triggers from the fast partition. Therefore
 the fast triggers are removed here but not for MC where all
 triggers are fast.
CheckCosmics(const TString& trigStri) const
 MUON triggers are not strictly minimum bias (MB) so they are
 removed (HHD)
CheckINELGT0(const AliESDEvent& esd, UShort_t& nClusters, UInt_t& triggers) const
CheckNSD(const AliESDEvent& esd, UInt_t& triggers) const
 Analyse some trigger stuff
CheckPileup(const AliESDEvent& esd, UInt_t& triggers) const
 Check for multiple vertices (pile-up) with at least 3
 contributors and at least 0.8cm from the primary vertex
 if(fCollisionSystem != AliForwardUtil::kPP) return false;
CheckMultiVertex(const AliESDEvent& esd, Bool_t checkOtherBC = false) const
 Adapted from AliAnalysisUtils

 Parameters
CheckEmpty(const TString& trigStr, UInt_t& triggers) const
CheckWords(const AliESDEvent& esd, UInt_t& triggers) const
ReadVertex(const AliESDEvent& esd, TVector3& ip)
 Read the vertex information from the ESD event

 Parameters:
   esd  ESD event
   vz   On return, the vertex Z position

 Return:
    @c true on success, @c false otherwise

CheckPWGUDVertex(const AliESDEvent& esd, TVector3& ip) const
 This is the code used by the 1st physics people
CheckpA2012Vertex(const AliESDEvent& esd, TVector3& ip) const
CheckpA2013Vertex(const AliESDEvent& esd, TVector3& ip) const
 This code is adopted from

   AliAnalysisUtils::IsVertexSelected2013pA(AliVEvent *event)

CheckVertex(const AliESDEvent& esd, TVector3& ip) const
 Use standard SPD vertex (perhaps preferable for Pb+Pb)
 Get the vertex
ReadRunDetails(const AliESDEvent* esd)
 Read the collision system, collision energy, and L3 field setting
 from the ESD

 Parameters:
   esd ESD to get information from

 Return:
    true on success, false

 AliInfo(Form("Parameters from 1st ESD event: cms=%s, sNN=%f, field=%f",
 	       esd->GetBeamType(), 2*esd->GetBeamEnergy(),
 	       esd->GetMagneticField()));
CodeString(UInt_t mask)
Print(Option_t* option = "") const
 Print information

   option Not used

AliFMDEventInspector()
   * Constructor

void SetLowFluxCut(Int_t c)
   * Set the number of SPD tracklets for which we consider the event a
   * low-flux event or not .
   *
   * @param c Cut (default 1000)

{ fLowFluxCut = c; }
void SetMaxVzErr(Double_t c = 0.1)
   * Set the maximum error on @f$ v_z@f$
   *
   * @param c Maximum error (in centimeters)

{ fMaxVzErr = c; }
void SetVertexMethod(AliFMDEventInspector::EVtxType t)
   * Set the vertex method to use
   *
   * @param t Method

{ fVtxMethod = t; }
void SetUseFirstPhysicsVtx(Bool_t use)
   * Use the first physics vtx code.
   *
   * @param use Use it or not
   * @deprecated Use SetVertexMethod

void SetpA2012Vtx(Bool_t use)
   * Use the first physics vtx code.
   *
   * @param use Use it or not
   * @deprecated Use SetVertexMethod

void SetUseV0AndForNSD(Bool_t use = true)
   * Use the 2012 pA vtx code.
   *
   * @param use Use it or not

{fUseV0AND = use; }
void SetMinPileupContributors(UShort_t nContrib = 3)
   * Set the minimum number of contributors for a 2nd pile-up vertex
   *
   * @param nContrib Least number of contributors

void SetMinPileupDistance(Double_t cm = 0.8)
   * Set minimum distance from primary vertex to 2nd pile-up vertex
   *
   * @param cm Distance (in centimeters)

void SetUseDisplacedVertices(Bool_t use = true)
   * Enable selection of displaced vertices.
   *
   * @param use whether to use
   * @deprecated Use SetVertexMethod

Bool_t IsUseDisplacedVertices() const
   * Set the lower centrality cut - if negative, do not use
   *
   * @deprecated We should accept all events in the AOD pass
   *
   * @param mincent Lower cut on centrality

{ return AllowDisplaced(); }
void SetCentralityMethod(const TString& m)
   * Set the centrality method to use.  Possible values are
   *
   * - VOM      - VZERO multiplicity
   * - V0A      - VZERO amplitude
   * - V0C      - VZERO charge
   * - FMD      - FMD scaled energy loss
   * - TRK      - Number of tracks
   * - TKL      - Number of tracks
   * - CL0      -
   * - CL1      -
   * - CND      -
   * - NPA      - Neutral particles
   * - ZNA      - ZDC neutron amplitude
   * - V0MvsFMD - VZERO versus FMD
   * - TKLvsVOM - Tracks versus VZERO
   * - ZEMvsZDC - ZDC
   *
   * @param m

{ fCentMethod = m; }
void SetPileupFlags(UShort_t flags = 0x5)
   * Pile-up flags.  A bit mask of EPileupType
   * - 0x1 Check for number of vertices from SPD
   * - 0x2 Check for number of vertices from tracks
   * - 0x4 Check out-of-bunch pile-up
   *
   * @param flags A bit mask of EPileupType

{ fPileupFlags = flags; }
void SetDebug(Int_t dbg = 1)
   * Set the debug level.  The higher the value the more output
   *
   * @param dbg Debug level

{ fDebug = dbg; }
void SetMC(Bool_t isMC = true)
   * Set whether this is MC or not.  Needed by energy loss fitter task
   * that never instantices AliFMDMCEventInspector.  In particular, we
   * need this to make sure we ignore the FAST partition flag in MC
   * for 2.76TeV pp.
   *
   * @param isMC If true, assume MC input

{ fMC = isMC; }
Bool_t IsMC() const
   * Fetch our histograms from the passed list
   *
   * @param d             Input
   * @param hEventsTr     On return, pointer to histogram, or null
   * @param hEventsTrVtx  On return, pointer to histogram, or null
   * @param hEventsAcc    On return, pointer to histogram, or null
   * @param hTriggers     On return, pointer to histogram, or null
   *
   * @return true on success, false otherwise

{ return fMC; }
UShort_t GetCollisionSystem() const
   * Get the collision system (one of the value in ECollisionSystem)
   *
   * @return Collision system

{ return fCollisionSystem; }
UShort_t GetEnergy() const
   * Get the center of mass energy (per nucleon pair) in GeV
   *
   * @return center of mass energy (per nucleon pair) in GeV

{ return fEnergy; }
Short_t GetField() const
   * Get the magnetic field setting of the L3 magnet in kilo Gauss.
   *
   * @return The magnetic field setting

{ return fField; }
ULong_t GetRunNumber() const
   * Get the current run number
   *
   * @return The current run number

{ return fRunNumber; }
Short_t GetProductionYear() const
   * Get the production year.
   *
   * - For real data, this is the year of the data taking
   * - For MC this is the year the production is anchored to.
   *
   * @return A two-digit year (post millennium), or -1

{ return fProdYear; }
Char_t GetProductionPeriod() const
   * Get the production period.
   *
   * - For real data, this is the period identifier of the data taking
   * - For MC data, this is the period identifier the production was
   *   anchored to
   *
   * @return Period identifier or null

{ return fProdLetter; }
Short_t GetProductionRevision() const
   * Get the AliROOT revision used for this production
   *
   * @return SVN revision number or -1

{ return fProdSVN; }
Bool_t IsProductionMC() const
   * Check if the production was an MC production anchored in some
   * real data.
   *
   * @return true if this (MC) production was anchored

{ return fProdMC; }
AliFMDEventInspector& operator=(const AliFMDEventInspector& o)
   * Assignement operator - not implemented
   *
   * @param o Object to assign from
   *
   * @return Reference to this object

Bool_t AllowDisplaced() const
   * Cache the configure trigger classes from the physis selection.
   *
   * @param cache   where to cache the trigger class.
   * @param classes List of configured classes.
   * @param o       Object from OADB with config

{ return fVtxMethod == kDisplaced; }