NCFS-Pack
A generic (astro)particle physics analysis framework
 
Loading...
Searching...
No Matches
NcCalorimeter Class Reference

Description of a modular calorimeter system. More...

#include "NcCalorimeter.h"

Inheritance diagram for NcCalorimeter:
NcDevice NcSignal NcPosition NcAttrib Nc3Vector

Detailed Description

Description of a modular calorimeter system.


Copyright(c) 1997 NCFS/IIHE, All Rights Reserved. *
*
Authors: The Netherlands Center for Fundamental Studies (NCFS). *
The Inter-university Institute for High Energies (IIHE). *
Website : http://www.iihe.ac.be *
Contact : Nick van Eijndhoven (nickve.nl@gmail.com) *
*
Contributors are mentioned in the code where appropriate. *
*
No part of this software may be used, copied, modified or distributed *
by any means nor transmitted or translated into machine language for *
commercial purposes without written permission by the IIHE representative. *
Permission to use the software strictly for non-commercial purposes *
is hereby granted without fee, provided that the above copyright notice *
appears in all copies and that both the copyright notice and this *
permission notice appear in the supporting documentation. *
This software is provided "as is" without express or implied warranty. *
The authors make no claims that this software is free of error, or is *
consistent with any particular standard of merchantability, or that it *
will meet your requirements for any particular application, other than *
indicated in the corresponding documentation. *
This software should not be relied on for solving a problem whose *
incorrect solution could result in injury to a person or loss of property. *
If you do use this software in such a manner, it is at your own risk. *
The authors disclaim all liability for direct or consequential damage *
resulting from your use of this software. *

// Class NcCalorimeter
// Description of a modular calorimeter system.
// A generic 2D geometry is used in which a module is identified by (row,col).
// Obviously this geometry can be a matrix, but also any other regular
// structure is supported, provided the user has adopted a proper convention
// to uniquely address a module via the (row,col) indices.
// Note : First module is identified as (1,1).
//
// This is the way to define and enter signals into a calorimeter :
//
// NcCalorimeter cal;
//
// cal.AddSignal(5,7,85.4);
// cal.AddSignal(5,7,25.9);
// cal.AddSignal(3,5,1000);
// cal.SetSignal(5,7,10.3);
// cal.Reset(3,5); // Reset module (3,5) as being 'not fired'
// // All module data are re-initialised.
// cal.SetEdgeOn(1,1); // Declare module (1,1) as an 'edge module'
// cal.SetDead(8,3);
// cal.SetGain(2,8,3.2);
//
// Float_t vec[3]={6,1,20};
// cal.SetPosition(2,8,vec,"car");
//
// NcSignal s;
// Float_t loc[3]={-1,12,3};
// s.SetPosition(loc,"car");
// s.SetSignal(328);
// cal.AddVetoSignal(s); // Associate (extrapolated) signal as a veto
//
// cal.Group(2); // Group 'fired' modules into clusters
// // Perform grouping over 2 rings around the center
// cal.Reset(); // Reset the complete calorimeter
// // Normally to prepare for the next event data
// // Note : Module gain, offset, edge and dead flags remain
//
//--- Author: Nick van Eijndhoven 13-jun-1997 Utrecht University
//- Modified: NvE $Date: 2010-03-19 11:10:02 +0100 (Fri, 19 Mar 2010) $ NCFS

Definition at line 22 of file NcCalorimeter.h.

Public Member Functions

 NcCalorimeter ()
 
 NcCalorimeter (const NcCalorimeter &c)
 
 NcCalorimeter (Int_t nrow, Int_t ncol)
 
virtual ~NcCalorimeter ()
 
void AddSignal (Int_t row, Int_t col, Float_t s)
 
void AddSignal (NcCalmodule *m)
 
void AddVetoSignal (NcSignal &s)
 
void AddVetoSignal (NcSignal *s)
 
virtual TObject * Clone (const char *name="") const
 
TH2F * DrawClusters (Float_t thresh=0.)
 
TH2F * DrawModules (Float_t thresh=0., Int_t mode=0)
 
NcCalclusterGetCluster (Int_t j) const
 
Float_t GetClusteredSignal (Int_t row, Int_t col)
 
Int_t GetDeadValue (Int_t row, Int_t col)
 
Int_t GetEdgeValue (Int_t row, Int_t col)
 
Float_t GetGain (Int_t row, Int_t col)
 
Int_t GetGainFlag (Int_t row, Int_t col)
 
Int_t GetMatrixSwapMode () const
 
NcCalmoduleGetModule (Int_t j) const
 
NcCalmoduleGetModule (Int_t row, Int_t col)
 
Int_t GetNclusters () const
 
Int_t GetNcolumns ()
 
Int_t GetNrows ()
 
Int_t GetNsignals () const
 
Int_t GetNvetos () const
 
Float_t GetOffset (Int_t row, Int_t col)
 
Int_t GetOffsetFlag (Int_t row, Int_t col)
 
NcPositionGetPosition (Int_t row, Int_t col)
 
void GetPosition (Int_t row, Int_t col, Float_t *r, TString f)
 
Float_t GetSignal (Int_t row, Int_t col, Int_t mode)
 
virtual Float_t GetSignal (Int_t row, Int_t col=0)
 
NcSignalGetVetoSignal (Int_t j) const
 
void Group (Int_t n=1, Int_t mode=1)
 
virtual void Reset (Int_t mode=0)
 
void Reset (Int_t row, Int_t col)
 
void SetAlive (Int_t row, Int_t col)
 
void SetDead (Int_t row, Int_t col)
 
void SetEdgeOff (Int_t row, Int_t col)
 
void SetEdgeOn (Int_t row, Int_t col)
 
void SetGain (Int_t row, Int_t col, Float_t g)
 
void SetMatrixSwapMode (Int_t swap=1)
 
void SetOffset (Int_t row, Int_t col, Float_t o)
 
void SetPosition (Int_t row, Int_t col, Float_t *r, TString f)
 
void SetPosition (Int_t row, Int_t col, Nc3Vector &r)
 
void SetSignal (Int_t row, Int_t col, Float_t s)
 
- Public Member Functions inherited from NcDevice
 NcDevice (const char *name="", const char *title="")
 
 NcDevice (const NcDevice &dev)
 
virtual ~NcDevice ()
 
void AddHit (NcSignal &s)
 
void AddHit (NcSignal *s)
 
virtual void Data (TString f="car", TString u="rad") const
 
void DisplayHits (Int_t idx=1, Float_t scale=-1, TObjArray *hits=0, Int_t dp=0, Int_t mode=1, Int_t mcol=4)
 
void DisplayHits (TString name, Float_t scale=-1, TObjArray *hits=0, Int_t dp=0, Int_t mode=1, Int_t mcol=4)
 
NcPosition GetCOG (TObjArray *hits, Int_t pos=0, TString slotname="none", Int_t mode=0) const
 
Double_t GetCVAL (TObjArray *hits, TString obsname, TString weightname="none", Int_t mode=0, Int_t type=1) const
 
void GetExtremes (Float_t &vmin, Float_t &vmax, Int_t idx=1, TObjArray *hits=0, Int_t mode=1, Int_t deadcheck=1) const
 
void GetExtremes (Float_t &vmin, Float_t &vmax, TString name, TObjArray *hits=0, Int_t mode=1, Int_t deadcheck=1) const
 
NcSignalGetHit (Int_t j) const
 
NcSignalGetHit (TString name, Int_t mode=0, Int_t opt=0) const
 
Int_t GetHitCopy () const
 
Nc3Vector GetHitPath (TObjArray *hits, Int_t pos=0) const
 
TObjArray * GetHits ()
 
void GetHits (TObjArray &selected, TString name, Int_t mode=0, Int_t opt=0, TObjArray *hits=0) const
 
NcSignalGetIdHit (Int_t id) const
 
Int_t GetNhits () const
 
Int_t GetNhits (TString name, Int_t mode=0, Int_t opt=0) const
 
Int_t GetStatus () const
 
void RemoveHit (NcSignal &s)
 
void RemoveHit (NcSignal *s)
 
void RemoveHits ()
 
void SetHitCopy (Int_t j)
 
virtual void SetOwner (Bool_t own=kTRUE)
 
void SetStatus (Int_t word)
 
void ShowHit (Int_t j=0, TString f="car", TString u="rad") const
 
Double_t SlideWindow (TObjArray *hits, Double_t thres, Double_t swin, TString sname, Int_t smode=0, TString wname="none", Int_t wmode=0, Int_t *i1=0, Int_t *i2=0) const
 
TObjArray * SortHits (Int_t idx=1, Int_t mode=-1, TObjArray *hits=0, Int_t mcal=1, Int_t deadcheck=1, TObjArray *ordered=0)
 
TObjArray * SortHits (TString name, Int_t mode=-1, TObjArray *hits=0, Int_t mcal=1, Int_t deadcheck=1, TObjArray *ordered=0)
 
Double_t SumSignals (Int_t idx, Int_t mode=1, TObjArray *hits=0)
 
Double_t SumSignals (TString name, Int_t mode=1, TObjArray *hits=0)
 
- Public Member Functions inherited from NcSignal
 NcSignal (const char *name="", const char *title="")
 
 NcSignal (const NcSignal &s)
 
virtual ~NcSignal ()
 
void AddLink (TObject *obj, Int_t j=1)
 
void AddLink (TObject *obj, TString name)
 
virtual void AddSignal (Double_t sig, Int_t j=1)
 
virtual void AddSignal (Double_t sig, TString name)
 
void AddTrack (NcTrack &t, Int_t mode=1)
 
void DeleteSample (Int_t j=1)
 
void DeleteSample (TString name)
 
virtual void DeleteSignals (Int_t mode=0)
 
void DeleteWaveform (Int_t j=1)
 
void DeleteWaveform (TString name)
 
NcSampleDisplaySample (Int_t j=1, Int_t i=1) const
 
NcSampleDisplaySample (TString name, Int_t i=1) const
 
NcDeviceGetDevice () const
 
Int_t GetErrorFlag (Int_t j=1) const
 
Int_t GetErrorFlag (TString name) const
 
NcTrackGetIdTrack (Int_t id) const
 
Int_t GetIndices (TObject *obj, Int_t j, TArrayI &ks) const
 
Int_t GetIndices (TObject *obj, TArrayI &js, Int_t k) const
 
Int_t GetIndices (TObject *obj, TArrayI &js, TArrayI &ks) const
 
Int_t GetIndices (TObject *obj, TString name, TArrayI &ks) const
 
TObject * GetLink (Int_t j=1, Int_t k=1) const
 
TObject * GetLink (TString name, Int_t k=1) const
 
Int_t GetNerrors () const
 
Int_t GetNlinks (TObject *obj, TString name) const
 
Int_t GetNlinks (TObject *obj=0, Int_t j=0) const
 
Int_t GetNsamples () const
 
virtual Int_t GetNslots () const
 
Int_t GetNtracks (NcTrack *t=0) const
 
Int_t GetNvalues () const
 
Int_t GetNwaveforms () const
 
NcSampleGetSample (Int_t j=1) const
 
NcSampleGetSample (TString name) const
 
Int_t GetSampleIndex (TString name) const
 
virtual Float_t GetSignal (Int_t j=1, Int_t mode=0) const
 
virtual Float_t GetSignal (TString name, Int_t mode=0) const
 
virtual Float_t GetSignalError (Int_t j=1) const
 
virtual Float_t GetSignalError (TString name) const
 
Int_t GetSignalFlag (Int_t j=1) const
 
Int_t GetSignalFlag (TString name) const
 
Int_t GetSwapMode () const
 
NcTrackGetTrack (Int_t j) const
 
TH1F * GetWaveform (Int_t j=1) const
 
TH1F * GetWaveform (TString name) const
 
Int_t GetWaveformIndex (TString name) const
 
virtual void List (Int_t j=0) const
 
virtual void List (TString name) const
 
void ListSample (Int_t j=0) const
 
void ListTrack (Int_t j=0) const
 
void ListWaveform (Int_t j=0) const
 
void RemoveTrack (NcTrack &t, Int_t mode=1)
 
void RemoveTracks (Int_t mode=1)
 
void ResetLink (Int_t j=1, Int_t k=1)
 
void ResetLink (TString name, Int_t k=1)
 
void ResetLinks (TObject *obj, Int_t j=0, Int_t k=0)
 
void ResetLinks (TObject *obj, TString name, Int_t k=0)
 
void ResetSample (Int_t j=1)
 
void ResetSample (TString name)
 
virtual void ResetSignals (Int_t mode=0)
 
void ResetWaveform (Int_t j=1)
 
void ResetWaveform (TString name)
 
void SetDevice (NcDevice *dev)
 
void SetLink (TObject *obj, Int_t j=1, Int_t k=1)
 
void SetLink (TObject *obj, TString name, Int_t k=1)
 
void SetSample (NcSample *sample, Int_t j=1)
 
virtual void SetSignal (Double_t sig, Int_t j=1)
 
virtual void SetSignal (Double_t sig, TString name)
 
virtual void SetSignalError (Double_t dsig, Int_t j=1)
 
virtual void SetSignalError (Double_t dsig, TString name)
 
void SetSwapMode (Int_t swap=1)
 
void SetWaveform (TH1F *waveform, Int_t j=1)
 
- Public Member Functions inherited from NcPosition
 NcPosition ()
 
 NcPosition (const NcPosition &p)
 
virtual ~NcPosition ()
 
Double_t GetDistance (NcPosition &p, Float_t scale=-1)
 
Double_t GetDistance (NcPosition *p, Float_t scale=-1)
 
NcPositionGetPosition ()
 
void GetPosition (Double_t *r, TString f, TString u="rad", Float_t s=-1) const
 
void GetPosition (Float_t *r, TString f, TString u="rad", Float_t s=-1) const
 
void GetPositionErrors (Double_t *e, TString f, TString u="rad", Float_t s=-1) const
 
void GetPositionErrors (Float_t *e, TString f, TString u="rad", Float_t s=-1) const
 
NcTimestampGetTimestamp ()
 
Float_t GetUnitScale () const
 
void RemoveTimestamp ()
 
void ResetPosition ()
 
void SetPosition (Double_t *r, TString f, TString u="rad")
 
void SetPosition (Double_t r1, Double_t r2, Double_t r3, TString f, TString u="rad")
 
void SetPosition (Float_t *r, TString f, TString u="rad")
 
void SetPosition (Nc3Vector &r)
 
void SetPositionErrors (Double_t *e, TString f, TString u="rad")
 
void SetPositionErrors (Double_t e1, Double_t e2, Double_t e3, TString f, TString u="rad")
 
void SetPositionErrors (Float_t *e, TString f, TString u="rad")
 
void SetTimestamp (NcTimestamp &t)
 
void SetUnitScale (Float_t s)
 
- Public Member Functions inherited from Nc3Vector
 Nc3Vector ()
 
 Nc3Vector (const Nc3Vector &v)
 
virtual ~Nc3Vector ()
 
Double_t ConvertAngle (Double_t a, TString in, TString out) const
 
Nc3Vector Cross (Nc3Vector &q) const
 
Double_t Dot (Nc3Vector &q)
 
void GetErrors (Double_t *e, TString f, TString u="rad") const
 
void GetErrors (Float_t *e, TString f, TString u="rad") const
 
Double_t GetNorm ()
 
virtual Double_t GetOpeningAngle (Nc3Vector &q, TString u="rad")
 
Nc3Vector GetPrimed (TRotMatrix *m) const
 
Double_t GetPseudoRapidity ()
 
Double_t GetResultError () const
 
Nc3Vector GetUnprimed (TRotMatrix *m) const
 
Nc3Vector GetVecLong () const
 
void GetVector (Double_t *v, TString f, TString u="rad") const
 
void GetVector (Float_t *v, TString f, TString u="rad") const
 
Nc3Vector GetVecTrans () const
 
Double_t GetX (Int_t i, TString f, TString u="rad")
 
Int_t HasErrors () const
 
Int_t HasVector () const
 
virtual void Load (Nc3Vector &q)
 
Nc3Vector operator* (Double_t s) const
 
Nc3Vectoroperator*= (Double_t s)
 
Nc3Vector operator+ (Nc3Vector &q) const
 
Nc3Vectoroperator+= (Nc3Vector &q)
 
Nc3Vector operator- (Nc3Vector &q) const
 
Nc3Vectoroperator-= (Nc3Vector &q)
 
Nc3Vector operator/ (Double_t s) const
 
Nc3Vectoroperator/= (Double_t s)
 
Nc3Vectoroperator= (const Nc3Vector &q)
 
void PrintAngle (Double_t a, TString in, TString out, Int_t ndig=1, Bool_t align=kFALSE) const
 
void SetErrors (Double_t *e, TString f, TString u="rad")
 
void SetErrors (Double_t e1, Double_t e2, Double_t e3, TString f, TString u="rad")
 
void SetErrors (Float_t *e, TString f, TString u="rad")
 
void SetVector (Double_t *v, TString f, TString u="rad")
 
void SetVector (Double_t v1, Double_t v2, Double_t v3, TString f, TString u="rad")
 
void SetVector (Float_t *v, TString f, TString u="rad")
 
virtual void SetZero ()
 
- Public Member Functions inherited from NcAttrib
 NcAttrib ()
 
 NcAttrib (const NcAttrib &a)
 
virtual ~NcAttrib ()
 
void AddNamedSlot (TString s)
 
void DecreaseEdgeValue (Int_t j=1)
 
void DecreaseEdgeValue (TString name)
 
void DeleteCalibrations (Int_t mode=0)
 
TF1 * GetCalFunction (Int_t j=1) const
 
TF1 * GetCalFunction (TString name) const
 
Int_t GetCalWord (Int_t j=1) const
 
Int_t GetCalWord (TString name) const
 
Int_t GetDeadValue (Int_t j=1) const
 
Int_t GetDeadValue (TString name) const
 
TF1 * GetDecalFunction (Int_t j=1) const
 
TF1 * GetDecalFunction (TString name) const
 
Int_t GetEdgeValue (Int_t j=1) const
 
Int_t GetEdgeValue (TString name) const
 
Float_t GetGain (Int_t j=1) const
 
Float_t GetGain (TString name) const
 
Int_t GetGainFlag (Int_t j=1) const
 
Int_t GetGainFlag (TString name) const
 
Int_t GetLockValue (Int_t j=1) const
 
Int_t GetLockValue (TString name) const
 
Int_t GetNcalflags () const
 
Int_t GetNcalfuncs () const
 
Int_t GetNdecalfuncs () const
 
Int_t GetNgains () const
 
Int_t GetNnames () const
 
Int_t GetNoffsets () const
 
Float_t GetOffset (Int_t j=1) const
 
Float_t GetOffset (TString name) const
 
Int_t GetOffsetFlag (Int_t j=1) const
 
Int_t GetOffsetFlag (TString name) const
 
Int_t GetSlotIndex (TString name, Int_t opt=0) const
 
TString GetSlotName (Int_t j=1) const
 
void IncreaseEdgeValue (Int_t j=1)
 
void IncreaseEdgeValue (TString name)
 
virtual void Load (NcAttrib &a, Int_t j=0)
 
virtual void Load (NcAttrib &a, TString name)
 
void Lock (Int_t j=1)
 
void Lock (TString name)
 
void ResetGain (Int_t j=1)
 
void ResetGain (TString name)
 
void ResetOffset (Int_t j=1)
 
void ResetOffset (TString name)
 
void SetAlive (Int_t j=1)
 
void SetAlive (TString name)
 
void SetCalFunction (TF1 *f, Int_t j=1)
 
void SetCalFunction (TF1 *f, TString name)
 
void SetDead (Int_t j=1)
 
void SetDead (TString name)
 
void SetDecalFunction (TF1 *f, Int_t j=1)
 
void SetDecalFunction (TF1 *f, TString name)
 
void SetEdgeOff (Int_t j=1)
 
void SetEdgeOff (TString name)
 
void SetEdgeOn (Int_t j=1)
 
void SetEdgeOn (TString name)
 
void SetEdgeValue (Int_t val, Int_t j=1)
 
void SetEdgeValue (Int_t val, TString name)
 
void SetGain (Double_t gain, Int_t j=1)
 
void SetGain (Double_t gain, TString name)
 
void SetOffset (Double_t off, Int_t j=1)
 
void SetOffset (Double_t off, TString name)
 
void SetSlotName (TString s, Int_t j=1)
 
void Unlock (Int_t j=1)
 
void Unlock (TString name)
 

Protected Member Functions

void AddRing (Int_t row, Int_t col, Int_t n)
 
void LoadMatrix ()
 
void SortA ()
 
void SortM ()
 
void Ungroup ()
 
- Protected Member Functions inherited from NcSignal
void SetSigFlags (Int_t is, Int_t ie, Int_t j)
 
- Protected Member Functions inherited from NcAttrib
void SetCalFlags (Int_t gf, Int_t of, Int_t j)
 

Protected Attributes

TObjArray * fAttributes
 ! Matrix dbase with module attributes (e.g. gain, offset etc...)
 
TObjArray * fClusters
 
TH2F * fHclusters
 ! The cluster 2-D histogram for event display
 
TH2F * fHmodules
 ! The module 2-D histogram for event display
 
NcObjMatrixfMatrix
 ! Matrix lookup table of module pointers
 
Int_t fNcolumns
 
Int_t fNrows
 
NcObjMatrixfPositions
 ! Matrix dbase of module position pointers
 
Int_t fSwap
 
TObjArray * fVetos
 
- Protected Attributes inherited from NcDevice
Int_t fHitCopy
 
TObjArray * fHits
 
TObjArray * fMarkers
 ! Temp. array to hold the 3D markers for the hit display
 
TObjArray * fOrdered
 ! Temp. array to hold the ordered hits
 
Int_t fStatus
 
- Protected Attributes inherited from NcSignal
TObject * fDevice
 
TArrayF * fDsignals
 
NcObjMatrixfLinks
 
TObjArray * fSamples
 
TArrayI * fSigflags
 
TArrayF * fSignals
 
TObjArray * fTracks
 
TObjArray * fWaveforms
 
- Protected Attributes inherited from NcPosition
Float_t fScale
 
NcTimestampfTstamp
 
- Protected Attributes inherited from Nc3Vector
Double32_t fDresult
 ! Error on scalar result (e.g. norm or dotproduct)
 
Int_t fNv
 
Double32_t * fV
 
- Protected Attributes inherited from NcAttrib
TArrayI * fCalflags
 
TObjArray * fCalfuncs
 
TObjArray * fDecalfuncs
 
TArrayF * fGains
 
TObjArray * fNames
 
TArrayF * fOffsets
 

Additional Inherited Members

- Public Attributes inherited from NcSignal
Bool_t fDevset
 

Constructor & Destructor Documentation

◆ NcCalorimeter() [1/3]

NcCalorimeter::NcCalorimeter ( )
// Default constructor, all parameters set to 0.
// Create a calorimeter module matrix with fixed row and column size.
// Note : Due to the dynamic size extension when signals are set,
// the "edge modules" can NOT be marked automatically.
// This has to be done manually by the user via the SetEdgeOn()
// memberfunction.

Definition at line 84 of file NcCalorimeter.cxx.

◆ NcCalorimeter() [2/3]

NcCalorimeter::NcCalorimeter ( Int_t nrow,
Int_t ncol )
// Create a calorimeter module matrix with fixed row and column size.
// The modules at the edges are automatically marked as "edge modules".

Definition at line 154 of file NcCalorimeter.cxx.

◆ ~NcCalorimeter()

NcCalorimeter::~NcCalorimeter ( )
virtual
// Destructor to delete memory allocated to the various arrays and matrices.

Definition at line 109 of file NcCalorimeter.cxx.

◆ NcCalorimeter() [3/3]

NcCalorimeter::NcCalorimeter ( const NcCalorimeter & c)
// Copy constructor.

Definition at line 199 of file NcCalorimeter.cxx.

Member Function Documentation

◆ AddRing()

void NcCalorimeter::AddRing ( Int_t row,
Int_t col,
Int_t n )
protected
// Add module signals of 1 ring around (row,col) to current cluster.
// The gain etc... corrected module signals will be used in this process.
// The parameter n denotes the maximum number of rings around cluster center.
// Note : This function is used recursively.

Definition at line 1535 of file NcCalorimeter.cxx.

◆ AddSignal() [1/2]

void NcCalorimeter::AddSignal ( Int_t row,
Int_t col,
Float_t s )
// Add the signal to a certain calorimeter module.

Definition at line 355 of file NcCalorimeter.cxx.

◆ AddSignal() [2/2]

void NcCalorimeter::AddSignal ( NcCalmodule * m)
// Add the signal of module mod to the current calorimeter data.
// This enables mixing of calorimeter data of various events.
//
// Note : The position and attributes according to the user provided data
// for the corresponding (row,col) location will be used.
// In case there is no user provided data present, the position and
// attributes of the first module added to the corresponding (row,col)
// location will be taken, except for the "edge" and "dead" indicators.
// The latter will then both be set to 0.

Definition at line 383 of file NcCalorimeter.cxx.

◆ AddVetoSignal() [1/2]

void NcCalorimeter::AddVetoSignal ( NcSignal & s)
// Associate an (extrapolated) NcSignal as veto to the calorimeter.

Definition at line 1776 of file NcCalorimeter.cxx.

◆ AddVetoSignal() [2/2]

void NcCalorimeter::AddVetoSignal ( NcSignal * s)
inline

Definition at line 82 of file NcCalorimeter.h.

◆ Clone()

TObject * NcCalorimeter::Clone ( const char * name = "") const
virtual
// Make a deep copy of the current object and provide the pointer to the copy.
// This memberfunction enables automatic creation of new objects of the
// correct type depending on the object type, a feature which may be very useful
// for containers like NcEvent when adding objects in case the
// container owns the objects.

Reimplemented from NcDevice.

Definition at line 1890 of file NcCalorimeter.cxx.

◆ DrawClusters()

TH2F * NcCalorimeter::DrawClusters ( Float_t thresh = 0.)
// Provide a lego plot of the cluster signals.
// Only clusters with a signal value above the threshold (default thresh=0)
// will be displayed.

Definition at line 1698 of file NcCalorimeter.cxx.

◆ DrawModules()

TH2F * NcCalorimeter::DrawModules ( Float_t thresh = 0.,
Int_t mode = 0 )
// Provide a lego plot of the module signals.
// The input parameter mode (default mode=0) has the same meaning as
// specified in the memberfunction GetSignal(row,col,mode).
// Only modules with a (corrected) signal value above the threshold
// (default thresh=0) will be displayed.

Definition at line 1640 of file NcCalorimeter.cxx.

◆ GetCluster()

NcCalcluster * NcCalorimeter::GetCluster ( Int_t j) const
// Provide cluster number j.
// Note : j=1 denotes the first cluster

Definition at line 1589 of file NcCalorimeter.cxx.

◆ GetClusteredSignal()

Float_t NcCalorimeter::GetClusteredSignal ( Int_t row,
Int_t col )
// Provide the module signal after clustering.

Definition at line 1290 of file NcCalorimeter.cxx.

◆ GetDeadValue()

Int_t NcCalorimeter::GetDeadValue ( Int_t row,
Int_t col )
// Provide the value of the dead flag of a certain module.

Definition at line 1025 of file NcCalorimeter.cxx.

◆ GetEdgeValue()

Int_t NcCalorimeter::GetEdgeValue ( Int_t row,
Int_t col )
// Provide the value of the edge flag of a certain module.

Definition at line 985 of file NcCalorimeter.cxx.

◆ GetGain()

Float_t NcCalorimeter::GetGain ( Int_t row,
Int_t col )
// Provide the gain value of a certain module.
// See the memberfunction GetSignal() for a definition of the gain value.
//
// In case the gain value is unknown, the value 0 will be returned.

Definition at line 1145 of file NcCalorimeter.cxx.

◆ GetGainFlag()

Int_t NcCalorimeter::GetGainFlag ( Int_t row,
Int_t col )
// Provide the value of the gain flag of a certain module.

Definition at line 1065 of file NcCalorimeter.cxx.

◆ GetMatrixSwapMode()

Int_t NcCalorimeter::GetMatrixSwapMode ( ) const
// Provide the swap mode for the module and position matrices.
// For further details see the documentation of NcObjMatrix.

Definition at line 1849 of file NcCalorimeter.cxx.

◆ GetModule() [1/2]

NcCalmodule * NcCalorimeter::GetModule ( Int_t j) const
// Provide 'fired' module number j.
// Note : j=1 denotes the first 'fired' module

Definition at line 1612 of file NcCalorimeter.cxx.

◆ GetModule() [2/2]

NcCalmodule * NcCalorimeter::GetModule ( Int_t row,
Int_t col )
// Provide access to module (row,col).
// Note : first module is at (1,1).

Definition at line 1625 of file NcCalorimeter.cxx.

◆ GetNclusters()

Int_t NcCalorimeter::GetNclusters ( ) const
// Provide the number of clusters.

Definition at line 1576 of file NcCalorimeter.cxx.

◆ GetNcolumns()

Int_t NcCalorimeter::GetNcolumns ( )
// Provide the number of columns for the calorimeter module matrix.

Definition at line 285 of file NcCalorimeter.cxx.

◆ GetNrows()

Int_t NcCalorimeter::GetNrows ( )
// Provide the number of rows for the calorimeter module matrix.

Definition at line 271 of file NcCalorimeter.cxx.

◆ GetNsignals()

Int_t NcCalorimeter::GetNsignals ( ) const
// Provide the number of modules that contain a signal.
// Note : The number of modules marked 'dead' but which had a signal
// are included.

Definition at line 1315 of file NcCalorimeter.cxx.

◆ GetNvetos()

Int_t NcCalorimeter::GetNvetos ( ) const
// Provide the number of veto signals associated to the calorimeter.

Definition at line 1795 of file NcCalorimeter.cxx.

◆ GetOffset()

Float_t NcCalorimeter::GetOffset ( Int_t row,
Int_t col )
// Provide the offset value of a certain module.
// See the memberfunction GetSignal() for a definition of the offset value.
//
// In case the offset value is unknown, the value 0 will be returned.

Definition at line 1197 of file NcCalorimeter.cxx.

◆ GetOffsetFlag()

Int_t NcCalorimeter::GetOffsetFlag ( Int_t row,
Int_t col )
// Provide the value of the offset flag of a certain module.

Definition at line 1105 of file NcCalorimeter.cxx.

◆ GetPosition() [1/2]

NcPosition * NcCalorimeter::GetPosition ( Int_t row,
Int_t col )
// Access to the position of a certain calorimeter module.

Definition at line 1265 of file NcCalorimeter.cxx.

◆ GetPosition() [2/2]

void NcCalorimeter::GetPosition ( Int_t row,
Int_t col,
Float_t * r,
TString f )
// Return the position in user coordinates for a certain calorimeter module.

Definition at line 1249 of file NcCalorimeter.cxx.

◆ GetSignal() [1/2]

Float_t NcCalorimeter::GetSignal ( Int_t row,
Int_t col,
Int_t mode )
// Provide the signal of a certain calorimeter module.
// In case the module was marked dead, 0 is returned.
//
// mode = 0 : Just the module signal is returned
// 1 : The module signal is corrected for the gain and offset.
// In case the gain value was not set, gain=1 will be assumed.
// In case the gain value was 0, a signal value of 0 is returned.
// In case the offset value was not set, offset=0 will be assumed.
//
// The corrected signal (sigc) is determined as follows :
//
// sigc=(signal/gain)-offset
//
// The default is mode=0.

Definition at line 558 of file NcCalorimeter.cxx.

◆ GetSignal() [2/2]

virtual Float_t NcCalorimeter::GetSignal ( Int_t row,
Int_t col = 0 )
inlinevirtual

Definition at line 40 of file NcCalorimeter.h.

◆ GetVetoSignal()

NcSignal * NcCalorimeter::GetVetoSignal ( Int_t j) const
// Provide access to the i-th veto signal of this calorimeter.
// Note : The first hit corresponds to i=1

Definition at line 1808 of file NcCalorimeter.cxx.

◆ Group()

void NcCalorimeter::Group ( Int_t n = 1,
Int_t mode = 1 )
// Group the individual modules into clusters.
// Module signals of n rings around the central module will be grouped.
// The grouping process will start with the module containing the highest signal
// in an iterative way.
// For this all fired modules are ordered w.r.t. decreasing signal.
// The search mode for the module signal hierarchy can be specified by the user.
//
// mode = 1 : Search performed via the (row,col) structure of the matrix (SortM)
// 2 : Search performed via the linear array of fired modules (SortA)
//
// See the docs of the memberfunctions SortM and SortA for additional details.
//
// Default values : n=1 mode=1.

Definition at line 1328 of file NcCalorimeter.cxx.

◆ LoadMatrix()

void NcCalorimeter::LoadMatrix ( )
protected
// Load the matrix lookup table of module pointers from the linear hit array.

Definition at line 1861 of file NcCalorimeter.cxx.

◆ Reset() [1/2]

void NcCalorimeter::Reset ( Int_t mode = 0)
virtual
// Reset the signals for the complete calorimeter.
// Normally this is done to prepare for the data of the next event.
//
// mode = 0 : Swap mode, module positions and attributes remain unchanged.
// 1 : Swap mode, module positions and attributes are cleared.
//
// The default is mode=0.
//
// Note : In the case of reading NcCalorimeter objects from a data file,
// one has to reset the NcCalorimeter object with mode=1
// (or explicitly delete it) before reading-in the next object
// in order to prevent memory leaks.

Reimplemented from NcDevice.

Definition at line 480 of file NcCalorimeter.cxx.

◆ Reset() [2/2]

void NcCalorimeter::Reset ( Int_t row,
Int_t col )
// Reset the signal for a certain calorimeter module.
// Note : Module position and attributes remain unchanged.

Definition at line 454 of file NcCalorimeter.cxx.

◆ SetAlive()

void NcCalorimeter::SetAlive ( Int_t row,
Int_t col )
// Indicate a certain calorimeter module as 'active module'.

Definition at line 784 of file NcCalorimeter.cxx.

◆ SetDead()

void NcCalorimeter::SetDead ( Int_t row,
Int_t col )
// Indicate a certain calorimeter module as 'dead module'.

Definition at line 705 of file NcCalorimeter.cxx.

◆ SetEdgeOff()

void NcCalorimeter::SetEdgeOff ( Int_t row,
Int_t col )
// Indicate a certain calorimeter module as 'non-edge module'.

Definition at line 673 of file NcCalorimeter.cxx.

◆ SetEdgeOn()

void NcCalorimeter::SetEdgeOn ( Int_t row,
Int_t col )
// Indicate a certain calorimeter module as 'edge module'.

Definition at line 630 of file NcCalorimeter.cxx.

◆ SetGain()

void NcCalorimeter::SetGain ( Int_t row,
Int_t col,
Float_t g )
// Set the gain value for a certain calorimeter module.
// See the memberfunction GetSignal() for a definition of the gain value.

Definition at line 842 of file NcCalorimeter.cxx.

◆ SetMatrixSwapMode()

void NcCalorimeter::SetMatrixSwapMode ( Int_t swap = 1)
// Set the swap mode for the module and position matrices.
// At invokation of this memberfunction the default argument is swap=1.
// For further details see the documentation of NcObjMatrix.

Definition at line 1829 of file NcCalorimeter.cxx.

◆ SetOffset()

void NcCalorimeter::SetOffset ( Int_t row,
Int_t col,
Float_t o )
// Set the offset value for a certain calorimeter module.
// See the memberfunction GetSignal() for a definition of the offset value.

Definition at line 886 of file NcCalorimeter.cxx.

◆ SetPosition() [1/2]

void NcCalorimeter::SetPosition ( Int_t row,
Int_t col,
Float_t * r,
TString f )
// Set the position in user coordinates for a certain calorimeter module.

Definition at line 930 of file NcCalorimeter.cxx.

◆ SetPosition() [2/2]

void NcCalorimeter::SetPosition ( Int_t row,
Int_t col,
Nc3Vector & r )
// Set the position for a certain calorimeter module.

Definition at line 943 of file NcCalorimeter.cxx.

◆ SetSignal()

void NcCalorimeter::SetSignal ( Int_t row,
Int_t col,
Float_t s )
// Set the signal for a certain calorimeter module.

Definition at line 299 of file NcCalorimeter.cxx.

◆ SortA()

void NcCalorimeter::SortA ( )
protected
// Order the modules with decreasing signal by looping over the linear array
// of fired modules.
// Modules which were declared as "Dead" will be rejected.
// The gain etc... corrected module signals will be used in the ordering process.
//
// Note : This method is rather fast even for large, very finely granulated calorimeters.
//
// Very specific case :
// ====================
// In case of various overlapping showers of which the central modules have
// EXACTLY the same signal this ordering procedure may have the following
// advantages and disadvantages.
//
// Advantages :
// ------------
// * Even in case of a very high occupancy, the resulting cluster signals
// will in general NOT depend on the geometrical location in the detector matrix.
//
// Disadvantages :
// ---------------
// * In case of multi-overlapping showers, the central shower might be
// "eaten-up" from both sides, resulting in a slightly too low value
// of the resulting cluster signal.
// * This method might produce results depending on the filling
// order of the matrix modules.

Definition at line 1500 of file NcCalorimeter.cxx.

◆ SortM()

void NcCalorimeter::SortM ( )
protected
// Order the modules with decreasing signal by looping over the (row,col) grid
// of the matrix.
// Modules which were declared as "Dead" will be rejected.
// The gain etc... corrected module signals will be used in the ordering process.
//
// Note : This method may become slow for large, very finely granulated calorimeters.
//
// Very specific case :
// ====================
// In case of various overlapping showers of which the central modules have
// EXACTLY the same signal this ordering procedure may have the following
// advantages and disadvantages.
//
// Advantages :
// ------------
// * In case of multi-overlapping showers, the central shower will NOT
// be "eaten-up" from both sides, resulting in a slightly more accurate
// cluster signal.
// * This method produces re-producable results, irrespective of the filling
// order of the matrix modules.
//
// Disadvantages :
// ---------------
// * In case of a very high occupancy, there might be a slight effect on the
// cluster signals depending on the geometrical location in the detector matrix.

Definition at line 1412 of file NcCalorimeter.cxx.

◆ Ungroup()

void NcCalorimeter::Ungroup ( )
protected
// Set the module signals back to the non-clustered situation.

Definition at line 1750 of file NcCalorimeter.cxx.

Member Data Documentation

◆ fAttributes

TObjArray* NcCalorimeter::fAttributes
protected

! Matrix dbase with module attributes (e.g. gain, offset etc...)

Definition at line 101 of file NcCalorimeter.h.

◆ fClusters

TObjArray* NcCalorimeter::fClusters
protected

Definition at line 95 of file NcCalorimeter.h.

◆ fHclusters

TH2F* NcCalorimeter::fHclusters
protected

! The cluster 2-D histogram for event display

Definition at line 99 of file NcCalorimeter.h.

◆ fHmodules

TH2F* NcCalorimeter::fHmodules
protected

! The module 2-D histogram for event display

Definition at line 98 of file NcCalorimeter.h.

◆ fMatrix

NcObjMatrix* NcCalorimeter::fMatrix
protected

! Matrix lookup table of module pointers

Definition at line 91 of file NcCalorimeter.h.

◆ fNcolumns

Int_t NcCalorimeter::fNcolumns
protected

Definition at line 90 of file NcCalorimeter.h.

◆ fNrows

Int_t NcCalorimeter::fNrows
protected

Definition at line 89 of file NcCalorimeter.h.

◆ fPositions

NcObjMatrix* NcCalorimeter::fPositions
protected

! Matrix dbase of module position pointers

Definition at line 102 of file NcCalorimeter.h.

◆ fSwap

Int_t NcCalorimeter::fSwap
protected

Definition at line 92 of file NcCalorimeter.h.

◆ fVetos

TObjArray* NcCalorimeter::fVetos
protected

Definition at line 100 of file NcCalorimeter.h.


The documentation for this class was generated from the following files: