StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Static Public Member Functions | List of all members
StEEmcSlowMaker Class Reference

Slow simulator for EEMC. More...

#include <StEEmcSlowMaker.h>

Inheritance diagram for StEEmcSlowMaker:
StMaker TDataSet

Public Member Functions

 StEEmcSlowMaker (const Char_t *name="EEmcSlowSim", const Char_t *muDstMakerName=0)
 Class constructor. More...
virtual ~StEEmcSlowMaker ()
 Class destructor.
virtual Int_t Init ()
virtual Int_t Make ()
 Processes a single event. More...
void setEmbeddingMode (Bool_t e=true)
 Sets all switches required to perform embedding.
void disableTower ()
void disablePrePost ()
 Disables slow simulator for the preshower and postshwoer detectors.
void disableSMD ()
 Disables slow simulator for the SMD detectors.
void setAddPed (Bool_t a=true)
 Add pedestal offsets from DB.
void setSmearPed (Bool_t s=true)
 Smear the pedestal with sigma from DB.
void setDropBad (Bool_t d=true)
 Drop bad channels marked as "fail" in DB.
void setOverwrite (Bool_t o=true)
 Overwrite the muDst values.
void setTruncatePedSmear (Float_t nSigma)
 Set truncation of pedestal smearing.
void setMipElossSmd (Float_t e)
void setNpePerMipSmd (Int_t strip, Float_t npe)
void setNpePerMipSmd (Float_t npe)
void setMipElossPre (Int_t layer, Float_t e)
void setNpePerMipPre (Float_t npe)
void setSinglePeResolution (Float_t r)
void setSource (const Char_t *name)
 Set the source of ADC. Can be "MuDst" (default) or "StEvent".
void setRelativeLightYield (Float_t pre1, Float_t pre2, Float_t post)
void setDoLightYield (Bool_t ly)
void setSamplingFraction (Float_t f)
 Changes the sampling fraction from the default in the fast simulator.
void setTowerGainSpread (Float_t s, Float_t mean=1.0)
 Defines a spread in the tower gains, generated gains will be between zero and mean + 1.0.
void setSmdGainSpread (Float_t s, Int_t sector, Int_t uv, Int_t strip_index)
 Defines a spread in the SMD gains, generated gains will be between zero and mean + 1.0.
void setSmdGainSpread (Float_t s, Int_t strip_index)
void setSmdGainSpread (Float_t s)
virtual const char * GetCVS () const
 Displayed on session exit, leave it as-is please ...
- Public Member Functions inherited from StMaker
 StMaker (const char *name="", const char *dummy=0)
 Constructor & Destructor.
virtual Int_t IsChain () const
virtual void Clear (Option_t *option="")
 User defined functions.
virtual Int_t InitRun (Int_t runumber)
virtual void StartMaker ()
virtual Int_t IMake (Int_t number)
virtual void EndMaker (Int_t ierr)
virtual Int_t Finish ()
virtual Int_t FinishRun (Int_t oldrunumber)
virtual void FatalErr (Int_t Ierr, const char *Com)
virtual void PrintInfo ()
virtual void NotifyMe (const char *, const void *)
virtual void AddMaker (StMaker *mk)
virtual void MakeDoc (const TString &, const TString &, Bool_t)
virtual void AddData (TDataSet *data, const char *dir=".data")
 User methods.
virtual TDataSetAddObj (TObject *obj, const char *dir, int owner=1)
virtual TDataSetToWhiteBoard (const char *name, void *dat)
virtual TDataSetToWhiteBoard (const char *name, void *dat, void *del)
virtual TDataSetToWhiteBoard (const char *name, TObject *dat, Int_t owner)
virtual TDataSetToWhiteConst (const char *name, TObject *dat)
virtual TDataSetToWhiteConst (const char *name, void *dat)
virtual TDataSetWhiteBoard (const char *name, void *v=0) const
virtual Int_t Skip (Int_t nskip)
virtual void AddConst (TDataSet *data=0)
virtual void AddHist (TH1 *h, const char *dir=0)
virtual void AddGarb (TDataSet *data=0)
virtual void AddRunco (TDataSet *data=0)
virtual void AddRunco (Double_t par, const char *name, const char *comment)
void AddRunCont (TDataSet *data=0)
virtual TList * GetHistList () const
virtual TH1 * GetHist (const char *histName) const
virtual StMakercd ()
virtual StMakerCd ()
virtual Int_t GetNumber () const
 STAR methods.
virtual void SetNumber (Int_t number)
virtual StMakerGetParentChain () const
virtual Int_t GetIventNumber () const
 Returns the current event number.
virtual void SetIventNumber (Int_t iv)
virtual Int_t GetEventNumber () const
virtual Int_t GetRunNumber () const
 Returns the current RunNumber.
virtual const TDatime & GetDateTime () const
virtual const TDatime & GetDBTime () const
virtual void SetDateTime (Int_t idat, Int_t itim)
virtual StEvtHddrGetEvtHddr () const
virtual Int_t GetDate () const
virtual Int_t GetTime () const
virtual const char * GetEventType () const
virtual TDataSetGetData (const char *name, const char *dir=".data") const
virtual TDataSetGetData () const
virtual TDataSetGetConst () const
virtual TDataSetGetDataSet (const char *logInput) const
virtual TDataSetDataSet (const char *logInput) const
virtual TDataSetGetInputDS (const char *logInput) const
virtual TDataSetGetDataBase (const char *logInput, const TDatime *td=0)
virtual TDataSetGetInputDB (const char *logInput)
virtual Int_t GetDebug () const
virtual Int_t Debug () const
virtual Int_t GetMakeReturn () const
virtual TList * Histograms () const
virtual TString GetAlias (const char *log, const char *dir=".aliases") const
virtual TString GetInput (const char *log) const
virtual TString GetOutput (const char *log) const
virtual TList * GetMakeList () const
virtual StMakerGetParentMaker () const
virtual StMakerGetMaker (const char *mkname)
virtual StMakerGetMakerInheritsFrom (const char *mktype) const
virtual Bool_t IsActive ()
virtual StMakerMaker (const char *mkname)
virtual void SetBIT (EMakerStatus k)
 Maker Status Bits.
virtual void ResetBIT (EMakerStatus k)
virtual Bool_t TestBIT (EMakerStatus k)
virtual void SetActive (Bool_t k=kTRUE)
 Setters for flags and switches.
virtual void SetDebug (Int_t l=1)
virtual void SetDEBUG (Int_t l=1)
virtual void SetFlavor (const char *flav, const char *tabname)
virtual void SetMakeReturn (Int_t ret)
virtual void SetAlias (const char *log, const char *act, const char *dir=".aliases")
virtual void AddAlias (const char *log, const char *act, const char *dir=".aliases")
virtual void SetInput (const char *log, const char *act)
virtual void SetOutput (const char *log, const char *act)
virtual void SetOutput (const char *log, TDataSet *ds)
virtual void SetOutput (TDataSet *ds)
virtual void SetOutputAll (TDataSet *ds, Int_t level=1)
virtual void SetMode (Int_t mode=0)
virtual void SetNotify (const char *about, StMaker *mk)
virtual Int_t GetMode ()
virtual Int_t GetDebug ()
virtual const StChainOptGetChainOpt () const
virtual TFile * GetTFile () const
virtual void NotifyEm (const char *about, const void *ptr)
virtual Double_t RealTime ()
virtual Double_t CpuTime ()
virtual void StartTimer (Bool_t reset=kFALSE)
virtual void StopTimer ()
virtual void PrintTimer (Option_t *option="")
virtual void PrintTotalTime ()
virtual const char * GetName () const
 special overload
TObject * GetDirObj (const char *dir) const
void SetDirObj (TObject *obj, const char *dir)
Int_t SetAttr (const char *key, const char *val, const char *to=".")
Int_t SetAttr (const char *key, Int_t val, const char *to=".")
Int_t SetAttr (const char *key, UInt_t val, const char *to=".")
Int_t SetAttr (const char *key, Double_t val, const char *to=".")
Int_t SetAttr (const StMaker *mk)
Int_t RemAttr (const char *key, const char *to=".")
const TAttrGetAttr () const
Int_t IAttr (const char *key) const
UInt_t UAttr (const char *key) const
Double_t DAttr (const char *key) const
const char * SAttr (const char *key) const
void PrintAttr () const
- Public Member Functions inherited from TDataSet
 TDataSet (const char *name="", TDataSet *parent=0, Bool_t arrayFlag=kFALSE)
 TDataSet (const TDataSet &src, EDataSetPass iopt=kAll)
 TDataSet (TNode &src)
 This copy ctor has been depricated (left for thwe sake of the backweard compatibility)
virtual ~TDataSet ()
 std::cout << "Default destructor for " << GetName() << " - " << GetTitle() << std::endl;
virtual void Add (TDataSet *dataset)
virtual void AddAt (TDataSet *dataset, Int_t idx=0)
virtual void AddAtAndExpand (TDataSet *dataset, Int_t idx=0)
virtual void AddFirst (TDataSet *dataset)
 Add TDataSet object at the beginning of the dataset list of this dataset.
virtual void AddLast (TDataSet *dataset)
 Add TDataSet object at the end of the dataset list of this dataset.
TDataSetAt (Int_t idx) const
virtual void Browse (TBrowser *b)
 Browse this dataset (called by TBrowser).
virtual TObject * Clone (const char *newname="") const
 the custom implementation fo the TObject::Clone
virtual void Delete (Option_t *opt="")
virtual TDataSetFind (const char *path) const
virtual TDataSetFindByName (const char *name, const char *path="", Option_t *opt="") const
virtual TDataSetFindByPath (const char *path) const
 Aliase for TDataSet::Find(const Char_t *path) method.
virtual TDataSetFindByTitle (const char *title, const char *path="", Option_t *opt="") const
TObject * FindObject (const char *name) const
TObject * FindObject (const TObject *o) const
virtual TDataSetFirst () const
 Return the first object in the list. Returns 0 when list is empty.
TObjArray * GetObjArray () const
virtual TSeqCollection * GetCollection () const
TList * GetList () const
virtual Int_t GetListSize () const
TObject * GetMother () const
virtual TObject * GetObject () const
 The depricated method (left here for the sake of the backward compatibility)
virtual TDataSetGetParent () const
virtual Long_t HasData () const
virtual TDataSetInstance () const
virtual TString Path () const
 return the full path of this data set
virtual EDataSetPass Pass (EDataSetPass(*callback)(TDataSet *), Int_t depth=0)
virtual EDataSetPass Pass (EDataSetPass(*callback)(TDataSet *, void *), void *user, Int_t depth=0)
virtual void PrintContents (Option_t *opt="") const
virtual Int_t Purge (Option_t *opt="")
virtual void Remove (TDataSet *set)
 Remiove the "set" from this TDataSet.
virtual TDataSetRemoveAt (Int_t idx)
virtual void SetMother (TDataSet *parent=0)
virtual void SetObject (TObject *obj)
 The depricated method (left here for the sake of the backward compatibility)
virtual void SetParent (TDataSet *parent=0)
virtual void SetWrite ()
virtual void Shunt (TDataSet *newParent=0)
virtual void Sort ()
 Sort recursively all members of the TDataSet with TList::Sort method.
virtual Bool_t IsEmpty () const
 return kTRUE if the "internal" collection has no member
virtual Bool_t IsFolder () const
virtual Bool_t IsMarked () const
virtual Bool_t IsThisDir (const char *dirname, int len=-1, int ignorecase=0) const
virtual TDataSetLast () const
 Return the last object in the list. Returns 0 when list is empty.
virtual void ls (Option_t *option="") const
virtual void ls (Int_t depth) const
void Mark ()
void UnMark ()
void MarkAll ()
 Mark all members of this dataset.
void UnMarkAll ()
 UnMark all members of this dataset.
void InvertAllMarks ()
 Invert mark bit for all members of this dataset.
void Mark (UInt_t flag, EBitOpt reset=kSet)
virtual TDataSetNext () const
virtual TDataSetPrev () const
virtual void Update ()
virtual void Update (TDataSet *set, UInt_t opt=0)
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const

Static Public Member Functions

static Float_t getMipdEdx ()
 Return MIP dE/dx used for SMD, Pre, Post.
- Static Public Member Functions inherited from StMaker
static StMakerNew (const char *classname, const char *name="", void *title=0)
static StMakerGetTopChain ()
static StMakerGetChain ()
static StMakerGetFailedMaker ()
static StMakerGetMaker (const TDataSet *ds)
 Static functions.
static EDataSetPass ClearDS (TDataSet *ds, void *user)
static const char * RetCodeAsString (Int_t kode)
static Int_t AliasDate (const char *alias)
static Int_t AliasTime (const char *alias)
static const char * AliasGeometry (const char *alias)
static const DbAlias_tGetDbAliases ()
static void SetTestMaker (StTestMaker *mk)
static Int_t Cleanup (TDataSet *&ds)
static void lsMakers (const StMaker *top)
- Static Public Member Functions inherited from TDataSet
static TDataSetGetMainSet ()
 return pointer to the main dataset
static TDataSetinstance ()

Additional Inherited Members

- Public Types inherited from StMaker
enum  EDebugLevel { kNormal, kDebug }
enum  EMakerStatus {
  kInitBeg = 1, kInitEnd = 2, kMakeBeg = 3, kCleaBeg = 4,
  kFiniBeg = 5, kFiniEnd = 6, kActive = 7
- Public Types inherited from TDataSet
enum  EDataSetPass {
  kContinue, kPrune, kStop, kUp,
  kStruct, kAll, kRefs, kMarked
enum  ESetBits { kMark = BIT(22), kArray = BIT(20) }
enum  EBitOpt { kSet = kTRUE, kReset = kFALSE }
- Public Attributes inherited from StMaker
enum StMaker:: { ... }  EModule_return_Status
- Protected Member Functions inherited from StMaker
StMessMgrGetLogger () const
virtual TDataSetFindDataSet (const char *logInput, const StMaker *uppMk=0, const StMaker *dowMk=0) const
- Protected Member Functions inherited from TDataSet
virtual void SetMother (TObject *mother)
 TDataSet (const char *name, const char *title)
void AddMain (TDataSet *set)
 add data set to main data set
TDataSetGetRealParent ()
 return real parent
void MakeCollection ()
 Create the internal container at once if any.
- Static Protected Member Functions inherited from TDataSet
static EDataSetPass SortIt (TDataSet *ds)
static EDataSetPass SortIt (TDataSet *ds, void *user)
- Protected Attributes inherited from StMaker
 list of logInput:ActualInput
 list of logOuput:ActualOuput
TList * m_Histograms
 Run Control parameters.
Int_t fTallyMaker [kStFatal+1]
Int_t m_Mode
Int_t m_Number
 Integer mode of maker.
Int_t m_LastRun
 Serial event number.
Int_t m_DebugLevel
 Last Run number.
Int_t m_MakeReturn
 Debug level.
TStopwatch m_Timer
 Make() return flag.
 Timer object.
 StMemStat for Make.
Int_t fStatus
 StMemStat for Clear.
 Maker status.
- Protected Attributes inherited from TDataSet
TSeqCollection * fList
- Static Protected Attributes inherited from StMaker
static StMakerfgTopChain = 0
 list of Histograms
static StMakerfgStChain = 0
 pointer to top StChain
static StMakerfgFailedMaker = 0
 current pointer to StChain
static StTestMakerfgTestMaker = 0
 current pointer to failed maker
static Int_t fgTallyMaker [kStFatal+1] = {0,0,0,0,0}
- Static Protected Attributes inherited from TDataSet
static TDataSetfgMainSet = &mainSet

Detailed Description

Slow simulator for EEMC.

H. Spinka, J. Balewski, J. Webb, P. Nord

Links to development/documentation web pages

  1. Slow simulator version 1.0
  2. Slow simulator version 2.0

versions 1.0 to 1.4

StEEmcSlowMaker is the slow simulator for the EEMC. At present, it adds poisson statistics to the simulated response of the SMD, pre- and postshower detector chain. It is also capable of adding realistic pedestal offsets (and widths) based on database information.

Geant energy deposit was converted to an ADC response by the StEEmcFastMaker. This is inverted using gains stored with the "sim" flavor in the database, and thre resulting energy deposit is converted to number of mips. This is converted to the mean number of photoelectrons produced based on QA measurements at ANL (currently a fixed mean of 2.0 pe per mip for SMD, and 3.9 pe per mip pre/post). Poisson statistics are applied, and the results smeared with the single pe resolution.

Physics parameters are configurable through various "set" methods below. Defaults should be good for most applications.

By default, the ADC values stored in the muDst are overwritten with the values computed in this maker. i.e. makers in the chain which follow this maker will see more realistic SMD and pre/postshower response than those which come before it in the chain... i.e. unless you know what you're doing, put this before your anlaysis maker!

Present status: work ongoing to add more realistic light yield, 1 p.e. resolution, etc.

For the time being, towers remain a straight energy deposit –> adc coversion. See StEEmcFastMaker.

version 2.0

Starting with version 2.0, improvements have been made to the EEMC simulation:

  1. A fix has been applied which masks out towers whenever a "fail" bit is set in the database. Previously this would only take effect if pedestal offsets were added to the tower.
  2. Pre/post and SMD simulation now use StEmcHit::energy() and StMuEmcHit::getEnergy() to access energy deposited in tiles/strips.
  3. Corrections to the tower ADC values based on the energy deposited in the pre- and postshower layers are now made. See below for discussion.

The pre- and postshower layers of the endcap differ in construction from the other layers in the calorimeter stack. Two wavelength shifting fibers are used to collect the light in each of these layers, routed to the PMT tubes for the tower containing the pre/postshower tile, and to seperate MAPMT tubes for the preshower and postshower readouts. To correct for nonlinearities introduced by this construction, the preshower layers are 5mm thick (as opposed to 4mm for layers 3-24) and made of brighter scintillator.

The difference in geometry is accounted for in the geant model, but the brightness difference is not. Measurements of the mean number photoelectrons per MIP (<npe>/MIP) show that the preshower layers yield 1.86 times as much light per MIP compared to layers 3-23. The postshower layer yields only 0.94 times as much light as layers 3-23.

The fast simulator simulates the tower response in the following way. First it sums the GEANT energy deposited in the scintillator in all 24 layers

E = E_pre1 + E_pre2 + E_layer3 + ... + E_layer23 + E_post

It then divides by the sampling fraction and multiplies by the ideal gain to obtain the ADC response of the tower. The ideal gain is set such that a ET=60 GeV photon corresponds to ADC=4096.

ADC = E * gain / sampling fraction = E * gain / 0.048

But because the preshower (postshower) layers yield more (less) light per unit energy deposit, they are under (over) represented in the energy sum, and thus the ADC response.

To correct for this, the slow simulator calculated a "light yield weighted energy deposit"

E' = f * E_pre1 + g * E_pre2 + ... + h * E_post

with weights f,g,h for the preshower-1, preshower-2 and postshower layers. Substituting in the energy deposited in all layers, we can write E' as

E' = E + (f-1) * E_pre1 + (g-1) * E_pre2 + (h-1) * E_post

where f = g = 1.68 * (4/5), and h = 0.94 * (4/5) are the measured relative <npe>/MIP for 4mm of preshower 1, preshower 2 and postshower, relative to the <npe>/MIP for layers 3-23. The factors of (4/5) are present because the measured ratios include the increase in brightness due to the increased thickness of pre1,pre2 and post. This increase is already accounted for by the GEANT model, and hence should be factored out of the brightness correction.

version 2.10

  1. A flag was added to set specific defaults for use in BFC production.
  2. Default behavior in MuDst analysis chain was changed to disable the tower slow simulator since slow simulator will be run in BFC and energy deposits are not stored in the MuDst for towers. It is possible to 'redo' the slow simulator in an analysis chain using the event.root files from the simulation
  3. Pedestal smearing is truncated at N sigma (default is N=3)
  4. Set thicknesses of pre-shower layers to 4.75 to match fixed geometry

Definition at line 137 of file StEEmcSlowMaker.h.

Constructor & Destructor Documentation

StEEmcSlowMaker::StEEmcSlowMaker ( const Char_t *  name = "EEmcSlowSim",
const Char_t *  muDstMakerName = 0 

Class constructor.

By default, enable all three simulator subsystems

By default, we add a pedestal offset

By default, we smear the pedestal

By default, all channels are kept

By default, overwrite ADC in muDst

By default, source is MuDst

By default, truncate ped smearing at 3 sigma

By default, make tower energy sum corrections due to the relative light yields of the pre1, pre2 and post layers

Set benchmark values for the relative light yields from measurements. We multiply these measurements by a factor of 4.0/4.75 and 4.0/5.0 (the thickness of a normal layer divided by the thickness of the preshower and postshower layers, respectively), since the GEANT model already knows about the thickness of the layers.

Copy and verify configuration of the fast simulator

Copy fast simulator gains

Definition at line 22 of file StEEmcSlowMaker.cxx.

References StEEmcFastMaker::getPreshowerGain(), and StEEmcFastMaker::getSmdGain().

Member Function Documentation

void StEEmcSlowMaker::disableTower ( )

Disables slow simulator for the towers. ADC values stored in the MuDst/StEvent will reflect the values determined by the fast simulator.

Definition at line 248 of file StEEmcSlowMaker.h.

Referenced by Init().

Int_t StEEmcSlowMaker::Make ( )

Processes a single event.

Access to muDst .......................

Run slow simulator on towers

Run slow simulator on pre/postshower

Run slow simulator on smd

Acces to StEvent, automatic detection if in Embedding or BFC mode .....................

Run slow simulator on towers

Run slow simulator on pre/postshower

Run slow simulator on smd

Reimplemented from StMaker.

Definition at line 238 of file StEEmcSlowMaker.cxx.

References StMaker::GetName(), kStOk, kStWarn, StMaker::Make(), and StMuDst::muEmcCollection().

void StEEmcSlowMaker::setDoLightYield ( Bool_t  ly)

Sets control flag which controls whether or not the light-yield correction for the towers is performed. Defaults to true. If set false, no light yield correction is made.

Definition at line 303 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setMipElossPre ( Int_t  layer,
Float_t  e 

Set the energy lost by one MIP in a pre or postshower layer [GeV].

Definition at line 279 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setMipElossSmd ( Float_t  e)

Set the energy lost by one MIP in an SMD strip [GeV].

Definition at line 269 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setNpePerMipPre ( Float_t  npe)

Sets the number of photoelectrons per mip for the pre/postshower layers

Definition at line 282 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setNpePerMipSmd ( Int_t  strip,
Float_t  npe 

Set the number of photoelectrons per mip for the specified SMD strip [0..287]

Definition at line 272 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setNpePerMipSmd ( Float_t  npe)

Sets the number of photoelectrons per mip for all SMD stips to the specified value

Definition at line 275 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setRelativeLightYield ( Float_t  pre1,
Float_t  pre2,
Float_t  post 

Sets the relative light yields for layers 1, 2 and 24 in the calorimeter stack as measured. The difference in thickness between preshower and "normal" layers is accounted for internally in the code. Correction may be deactivated by calling setDoLightYield(false).

pre1<N p.e.>/MIP for layer1 / <N p.e.>/MIP for layers 3-23 default=1.86
pre2<N p.e.>/MIP for layer2 / <N p.e.>/MIP for layers 3-23 default=1.86
post<N p.e.>/MIP for layer24 / <N p.e.>/MIP for layers 3-23 default=0.94

Definition at line 298 of file StEEmcSlowMaker.h.

void StEEmcSlowMaker::setSinglePeResolution ( Float_t  r)

Set the resolution of the single photoelectron peak for the MAPMT's

Definition at line 286 of file StEEmcSlowMaker.h.

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