ROOT logo
AliRoot » EMCAL » AliEMCALTrigger

class AliEMCALTrigger: public AliTriggerDetector


  Class for trigger analysis.
  Digits are grouped in TRU's  (Trigger Units). A TRU consists of 384
  modules ordered fNTRUPhi x fNTRUEta. The algorithm searches all possible 2x2
  and nxn (n is a multiple of 2) cell combinations per each TRU,  adding the
  digits amplitude and finding the maximum. If found, look if it is isolated.
  Maxima are transformed in ADC time samples. Each time bin is compared to the trigger
  threshold until it is larger and then, triggers are set. Thresholds need to be fixed.
  Thresholds need to be fixed. Last 2 modules are half size in Phi, I considered
  that the number of TRU is maintained for the last modules but decision not taken.
  If different, then this must be changed.
  Usage:

  //Inside the event loop
  AliEMCALTrigger *tr = new AliEMCALTrigger();//Init Trigger
  tr->SetL0Threshold(100); //Arbitrary threshold values
  tr->SetL1GammaLowPtThreshold(1000);
  tr->SetL1GammaMediumPtThreshold(10000);
  tr->SetL1GammaHighPtThreshold(20000);

  tr->Trigger(); //Execute Trigger
  tr->Print(""); //Print results

*-- Author: Gustavo Conesa & Yves Schutz (IFIC, CERN)

Function Members (Methods)

public:
AliEMCALTrigger()
virtual~AliEMCALTrigger()
voidTObject::AbstractMethod(const char* method) const
voidAliTriggerDetector::AddInput(TObject* input)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidAliTriggerDetector::AssignInputs(const TObjArray& inputs)
virtual voidBrowse(TBrowser* b)
Bool_tCheckConsistentOfMatrixes(const Int_t pri = 0)MENU
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidCreateInputs()
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
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Float_tGet2x2AmpOutOfPatch() const
Float_tGet2x2AmpOutOfPatchThres() const
Float_tGet2x2MaxAmplitude() const
Int_tGet2x2ModuleEta() const
Int_tGet2x2ModulePhi() const
Int_tGet2x2SuperModule() const
Int_t*GetADCValuesHighGainMax2x2Sum() const
Int_t*GetADCValuesHighGainMaxnxnSum() const
Int_t*GetADCValuesLowGainMax2x2Sum() const
Int_t*GetADCValuesLowGainMaxnxnSum() const
TMatrixDGetAmpJetMax() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetEmcalSumAmp() const
virtual const char*TObject::GetIconName() const
AliTriggerInput*AliTriggerDetector::GetInput(TString& name)
AliTriggerInput*AliTriggerDetector::GetInput(const char* name)
TObjArray*AliTriggerDetector::GetInputs()
Int_tGetIsolPatchSize() const
TH2F*GetJetMatrixE() const
Float_tGetL0Threshold() const
Float_tGetL1GammaHighPtThreshold() const
Float_tGetL1GammaLowPtThreshold() const
Float_tGetL1GammaMediumPtThreshold() const
Double_t*GetL1JetThresholds() const
Long_tAliTriggerDetector::GetMask() const
static Double_tGetMeanEmcalEnergy(const Int_t mult)
static Double_tGetMeanEmcalPatchEnergy(const Int_t mult, Int_t patchSize)
virtual const char*TNamed::GetName() const
Char_t*GetNameOfJetTrigger(const Int_t i)
static TStringGetNameOfJetTriggers()
Int_tGetNJetThreshold() const
Float_tGetnxnAmpOutOfPatch() const
Float_tGetnxnAmpOutOfPatchThres() const
Float_tGetnxnMaxAmplitude() const
Int_tGetnxnModuleEta() const
Int_tGetnxnModulePhi() const
Int_tGetnxnSuperModule() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Int_tGetPatchSize() const
Bool_tGetTimeKey() 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)
Bool_tIs2x2Isol() const
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tIsFolder() const
Bool_tIsIsolatedInSuperModule() const
Bool_tIsnxnIsol() const
Bool_tTObject::IsOnHeap() const
Bool_tIsSimulation() const
virtual Bool_tTNamed::IsSortable() 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* opt = "") const
voidPrintAmpSmMatrix(Int_t ind) constMENU
voidPrintAmpTruMatrix(Int_t ind) constMENU
voidPrintJetMatrix() constMENU
voidPrintMatrix(const TMatrixD& mat) constMENU
virtual Int_tTObject::Read(const char* name)
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 = "")
voidSet2x2AmpOutOfPatchThres(Float_t th)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDigitsList(TClonesArray* digits)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliTriggerDetector::SetInput(TString& name)
voidAliTriggerDetector::SetInput(const char* name)
voidSetIsolateInSuperModule(Bool_t isol)
voidSetIsolPatchSize(Int_t ps)
voidSetJetParameters(const Int_t patchSize, Double_t* jetThreshold)
voidSetJetPatchSize(const Int_t patchSize)
voidSetL0Threshold(Int_t amp)
voidSetL1GammaHighPtThreshold(Int_t amp)
voidSetL1GammaLowPtThreshold(Int_t amp)
voidSetL1GammaMediumPtThreshold(Int_t amp)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidSetnxnAmpOutOfPatchThres(Float_t th)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPatchSize(Int_t ps)
voidSetSimulation(Bool_t sim)
voidSetTimeKey(Bool_t timeKey)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetVZER0Multiplicity(Double_t mult)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
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 voidTrigger()
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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
AliEMCALTrigger(const AliEMCALTrigger& trig)
voidFillJetMatrixFromSMs(TClonesArray* ampmatrixsmod, TMatrixD *const jetMat, AliEMCALGeometry *const g)
voidFillTRU(const TClonesArray* digits, TClonesArray* ampmatrix, TClonesArray* ampmatrixsmod, TClonesArray* timeRmatrix)
voidGetTriggerInfo(TArrayF& triggerPosition, TArrayF& triggerAmplitudes) const
Bool_tIsPatchIsolated(Int_t iPatchType, const TClonesArray* ampmods, const Int_t imod, const Int_t mtru, const Float_t maxamp, const Int_t maxphi, const Int_t maxeta)
voidMakeSlidingPatch(const TMatrixD& jm, const Int_t nPatchSize, TMatrixD& ampJetMax)
voidMakeSlidingTowers(const TClonesArray* amptrus, const TClonesArray* timeRtrus, const Int_t supermod, TMatrixD& ampmax2, TMatrixD& ampmaxn)
const AliEMCALTrigger&operator=(const AliEMCALTrigger&)
voidSetTriggers(const TClonesArray* amptrus, const Int_t iSM, const TMatrixD& ampmax2, const TMatrixD& ampmaxn)

Data Members

public:
static TStringfgNameOfJetTriggersName of jet triggers
protected:
TObjArrayAliTriggerDetector::fInputsArray of Triggers Inputs (AliTriggerInput class)
Long_tAliTriggerDetector::fMaskTrigger Mask ( bitwise OR of trigger inputs )
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
private:
Float_tf2x2AmpOutOfPatchAmplitude in isolation cone minus maximum amplitude of the reference 2x2 patch
Float_tf2x2AmpOutOfPatchThresThreshold to select a trigger as isolated on f2x2AmpOutOfPatch value
Float_tf2x2MaxAmp! Maximum 2x2 added amplitude (not overlapped)
Int_tf2x2ModuleEta! and column(eta)
Int_tf2x2ModulePhi! upper right cell, row(phi)
Int_tf2x2SM! Super Module where maximum is found
Int_t*fADCValuesHigh2x2! " high gain " 2x2 "
Int_t*fADCValuesHighnxn! Sampled ADC high gain values for the nxn crystals amplitude sum
Int_t*fADCValuesLow2x2! " low gaing " "
Int_t*fADCValuesLownxn! " low gain "
TMatrixD*fAmpJetMatrix-> Jet trigger matrix : (nphi(17), neta(12))
TMatrixDfAmpJetMax6 elements
TClonesArray*fAmpSMods! Array of amplides of SM matrixes
TClonesArray*fAmpTrus! Array of amplides of TRU matrixes
TClonesArray*fDigitsList! Array of digits
AliEMCALGeometry*fGeom!
Float_tfIs2x2Isol2x2 Patch is isolated if f2x2AmpOutOfPatchThres threshold is passed
Float_tfIsnxnIsolnxn Patch is isolated if fnxnAmpOutOfPatchThres threshold is passed
Int_tfIsolPatchSizeIsolation patch size, number of rows or columns to add to
Bool_tfIsolateInSuperModuleFlag to isolate trigger patch in SuperModule or in TRU acceptance
TH2F*fJetMatrixE-> temporary solution for getting coordinate informatin
Double_tfJetMaxAmpMax amp from patch (fNJetPatchPhi*fNJetPatchEta)
Float_tfL0ThresholdL0 trigger energy threshold
Float_tfL1GammaHighPtThresholdL1 gamma High pT trigger energy threshold
Float_tfL1GammaLowPtThresholdL1 gamma Low pT trigger energy threshold
Float_tfL1GammaMediumPtThresholdL1 gamma Medium pT trigger energy threshold
Double_t*fL1JetThreshold[fNJetThreshold] array of L1 jet energy threshold (this is not Et)
Int_tfNJetPatchEtasize of jet pathch in eta(column) direction (nJetPatchEta*4 module)
Int_tfNJetPatchPhisize of jet pathch in phi(row) direction (nJetPatchPhi*4 module)
Int_tfNJetThresholdnumber of jet threshold
Int_tfPatchSizeTrigger patch factor, to be multiplied to 2x2 cells
Bool_tfSimulationFlag to do the trigger during simulation or reconstruction
Bool_tfTimeKeyFlag to take into account the digits time information
TClonesArray*fTimeRtrus! Array of recent times (unused now)
TArrayFfTriggerAmplitudesTriggered patch amplitude
TArrayFfTriggerPositionTriggered patch position
Double_tfVZER0Multmultiplicity (V0A+V0c)
Float_tfnxnAmpOutOfPatchAmplitude in isolation cone minus maximum amplitude of the reference nxn patch
Float_tfnxnAmpOutOfPatchThresThreshold to select a trigger as isolated on fnxnAmpOutOfPatch value
Float_tfnxnMaxAmp! Maximum nxn added amplitude (overlapped)
Int_tfnxnModuleEta! and column(eta)
Int_tfnxnModulePhi! upper right cell, row(phi)
Int_tfnxnSM! Super Module where maximum is found

Class Charts

Inheritance Chart:
TNamed
AliTriggerDetector
AliEMCALTrigger

Function documentation

AliEMCALTrigger()
ctor
~AliEMCALTrigger()
void CreateInputs()
 inputs
Bool_t IsPatchIsolated(Int_t iPatchType, const TClonesArray* ampmods, const Int_t imod, const Int_t mtru, const Float_t maxamp, const Int_t maxphi, const Int_t maxeta)
void MakeSlidingTowers(const TClonesArray* amptrus, const TClonesArray* timeRtrus, const Int_t supermod, TMatrixD& ampmax2, TMatrixD& ampmaxn)
 Output from module (2x2 cells from one module)
void Print(Option_t* opt = "") const
void SetTriggers(const TClonesArray* amptrus, const Int_t iSM, const TMatrixD& ampmax2, const TMatrixD& ampmaxn)
Checks the 2x2 and nxn maximum amplitude per each TRU and
compares with the different L0 and L1 triggers thresholds
void FillTRU(const TClonesArray* digits, TClonesArray* ampmatrix, TClonesArray* ampmatrixsmod, TClonesArray* timeRmatrix)
void Trigger()
Main Method to select triggers.
void GetTriggerInfo(TArrayF& triggerPosition, TArrayF& triggerAmplitudes) const
 Template - should be defined; Nov 5, 2007
void FillJetMatrixFromSMs(TClonesArray* ampmatrixsmod, TMatrixD *const jetMat, AliEMCALGeometry *const g)
 Nov 5, 2007
 Fill matrix for jet trigger from SM matrixes of modules

void MakeSlidingPatch(const TMatrixD& jm, const Int_t nPatchSize, TMatrixD& ampJetMax)
 Sliding patch : nPatchSize x nPatchSize (OVERLAP)
Double_t GetEmcalSumAmp() const
 Return sum of amplidutes from EMCal
 Used calibration coefficeint for transition to energy
void PrintJetMatrix() const
  fAmpJetMatrix : (17,12); // 17-phi(row), 12-eta(col)
void PrintAmpTruMatrix(Int_t ind) const
 Print matrix with TRU patches
void PrintAmpSmMatrix(Int_t ind) const
 Print matrix with SM amplitudes
void PrintMatrix(const TMatrixD& mat) const
Print matrix object
Bool_t CheckConsistentOfMatrixes(const Int_t pri = 0)
 Check consitency of matrices
void Browse(TBrowser* b)
AliEMCALTrigger()
Float_t Get2x2MaxAmplitude() const
Getters
{ return f2x2MaxAmp ; }
Float_t GetnxnMaxAmplitude() const
{ return fnxnMaxAmp ; }
Int_t Get2x2ModulePhi() const
{ return f2x2ModulePhi ; }
Int_t GetnxnModulePhi() const
{ return fnxnModulePhi ; }
Int_t Get2x2ModuleEta() const
{ return f2x2ModuleEta ; }
Int_t GetnxnModuleEta() const
{ return fnxnModuleEta ; }
Int_t Get2x2SuperModule() const
{ return f2x2SM ; }
Int_t GetnxnSuperModule() const
{ return fnxnSM ; }
Int_t * GetADCValuesLowGainMax2x2Sum() const
{ return fADCValuesLow2x2; }
Int_t * GetADCValuesHighGainMax2x2Sum() const
{ return fADCValuesHigh2x2; }
Int_t * GetADCValuesLowGainMaxnxnSum() const
{ return fADCValuesLownxn; }
Int_t * GetADCValuesHighGainMaxnxnSum() const
{ return fADCValuesHighnxn; }
Float_t GetL0Threshold() const
{ return fL0Threshold ; }
Float_t GetL1GammaLowPtThreshold() const
Float_t GetL1GammaMediumPtThreshold() const
Float_t GetL1GammaHighPtThreshold() const
Int_t GetPatchSize() const
{ return fPatchSize ; }
Int_t GetIsolPatchSize() const
{ return fIsolPatchSize ; }
Float_t Get2x2AmpOutOfPatch() const
{ return f2x2AmpOutOfPatch ; }
Float_t GetnxnAmpOutOfPatch() const
{ return fnxnAmpOutOfPatch ; }
Float_t Get2x2AmpOutOfPatchThres() const
Float_t GetnxnAmpOutOfPatchThres() const
Bool_t Is2x2Isol() const
{ return fIs2x2Isol ; }
Bool_t IsnxnIsol() const
{ return fIsnxnIsol ; }
Bool_t IsSimulation() const
{ return fSimulation ; }
Bool_t IsIsolatedInSuperModule() const
Bool_t GetTimeKey() const
{ return fTimeKey;}
TH2F* GetJetMatrixE() const
{ return fJetMatrixE;}
Int_t GetNJetThreshold() const
{return fNJetThreshold;}
Double_t* GetL1JetThresholds() const
{return fL1JetThreshold;}
TMatrixD GetAmpJetMax() const
{return fAmpJetMax;}
void SetDigitsList(TClonesArray* digits)
Setters
{fDigitsList = digits ; }
void SetL0Threshold(Int_t amp)
{fL0Threshold = amp; }
void SetL1GammaLowPtThreshold(Int_t amp)
void SetL1GammaMediumPtThreshold(Int_t amp)
void SetL1GammaHighPtThreshold(Int_t amp)
void SetPatchSize(Int_t ps)
{fPatchSize = ps ; }
void SetIsolPatchSize(Int_t ps)
{fIsolPatchSize = ps ; }
void Set2x2AmpOutOfPatchThres(Float_t th)
void SetnxnAmpOutOfPatchThres(Float_t th)
void SetSimulation(Bool_t sim)
{fSimulation = sim ; }
void SetIsolateInSuperModule(Bool_t isol)
void SetTimeKey(Bool_t timeKey)
{fTimeKey = timeKey;}
void SetJetPatchSize(const Int_t patchSize)
{fNJetPatchPhi = fNJetPatchEta = patchSize;}
void SetJetParameters(const Int_t patchSize, Double_t* jetThreshold)
void SetVZER0Multiplicity(Double_t mult)
{fVZER0Mult = mult;}
Bool_t IsFolder() const
{return kTRUE;}
Char_t* GetNameOfJetTrigger(const Int_t i)
 Name of Jet trigger(s)
{return Form("%s_Th_%2.2i",fgNameOfJetTriggers.Data(),i);}
TString GetNameOfJetTriggers()
Double_t GetMeanEmcalEnergy(const Int_t mult)
 Estimation on EMCal energy from VZERO multiplicity
 0.0153 is coefficient from adc to energy
 Dec 4, 2007
 1  p0           2.52248e-02   3.24364e-05   9.29319e-01  -2.34036e-06
{return 2.52248e-02*Double_t(mult);}
Double_t GetMeanEmcalPatchEnergy(const Int_t mult, Int_t patchSize)
{return GetMeanEmcalEnergy(mult)*Double_t(patchSize)*Double_t(patchSize)/208.;}