StRoot
1
|
Slow simulator for EEMC. More...
#include <StEEmcSlowMaker.h>
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 () |
Initialization. | |
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 TDataSet * | AddObj (TObject *obj, const char *dir, int owner=1) |
virtual TDataSet * | ToWhiteBoard (const char *name, void *dat) |
virtual TDataSet * | ToWhiteBoard (const char *name, void *dat, void *del) |
virtual TDataSet * | ToWhiteBoard (const char *name, TObject *dat, Int_t owner) |
virtual TDataSet * | ToWhiteConst (const char *name, TObject *dat) |
virtual TDataSet * | ToWhiteConst (const char *name, void *dat) |
virtual TDataSet * | WhiteBoard (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 StMaker * | cd () |
virtual StMaker * | Cd () |
virtual Int_t | GetNumber () const |
STAR methods. | |
virtual void | SetNumber (Int_t number) |
virtual StMaker * | GetParentChain () 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 StEvtHddr * | GetEvtHddr () const |
virtual Int_t | GetDate () const |
virtual Int_t | GetTime () const |
virtual const char * | GetEventType () const |
virtual TDataSet * | GetData (const char *name, const char *dir=".data") const |
virtual TDataSet * | GetData () const |
virtual TDataSet * | GetConst () const |
virtual TDataSet * | GetDataSet (const char *logInput) const |
virtual TDataSet * | DataSet (const char *logInput) const |
virtual TDataSet * | GetInputDS (const char *logInput) const |
virtual TDataSet * | GetDataBase (const char *logInput, const TDatime *td=0) |
virtual TDataSet * | GetInputDB (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 StMaker * | GetParentMaker () const |
virtual StMaker * | GetMaker (const char *mkname) |
virtual StMaker * | GetMakerInheritsFrom (const char *mktype) const |
virtual Bool_t | IsActive () |
virtual StMaker * | Maker (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 StChainOpt * | GetChainOpt () 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 TAttr * | GetAttr () 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. | |
TDataSet * | At (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 TDataSet * | Find (const char *path) const |
virtual TDataSet * | FindByName (const char *name, const char *path="", Option_t *opt="") const |
virtual TDataSet * | FindByPath (const char *path) const |
Aliase for TDataSet::Find(const Char_t *path) method. | |
virtual TDataSet * | FindByTitle (const char *title, const char *path="", Option_t *opt="") const |
TObject * | FindObject (const char *name) const |
TObject * | FindObject (const TObject *o) const |
virtual TDataSet * | First () 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 TDataSet * | GetParent () const |
virtual Long_t | HasData () const |
virtual TDataSet * | Instance () 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 TDataSet * | RemoveAt (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 TDataSet * | Last () 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 TDataSet * | Next () const |
virtual TDataSet * | Prev () 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 StMaker * | New (const char *classname, const char *name="", void *title=0) |
static StMaker * | GetTopChain () |
static StMaker * | GetChain () |
static StMaker * | GetFailedMaker () |
static StMaker * | GetMaker (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_t * | GetDbAliases () |
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 TDataSet * | GetMainSet () |
return pointer to the main dataset | |
static TDataSet * | instance () |
Additional Inherited Members | |
Public Types inherited from StMaker | |
enum | EDebugLevel { kNormal, kDebug } |
enum | { kSTAFCV_BAD, kSTAFCV_OK, kSTAFCV_ERR =2, kSTAFCV_FATAL =3 } |
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 | |
StMessMgr * | GetLogger () const |
virtual TDataSet * | FindDataSet (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 | |
TDataSet * | GetRealParent () |
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 | |
TDataSet * | m_DataSet |
TDataSet * | m_ConstSet |
TDataSet * | m_GarbSet |
TDataSet * | m_Inputs |
TDataSet * | m_Ouputs |
list of logInput:ActualInput | |
TDataSet * | m_Runco |
list of logOuput:ActualOuput | |
TList * | m_Histograms |
Run Control parameters. | |
Int_t | fTallyMaker [kStFatal+1] |
counters | |
Int_t | m_Mode |
counters | |
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. | |
StMemStat * | fMemStatMake |
Timer object. | |
StMemStat * | fMemStatClear |
StMemStat for Make. | |
Int_t | fStatus |
StMemStat for Clear. | |
StMessMgr * | fLogger |
Maker status. | |
StTurnLogger * | fLoggerHold |
Protected Attributes inherited from TDataSet | |
TDataSet * | fParent |
TSeqCollection * | fList |
Static Protected Attributes inherited from StMaker | |
static StMaker * | fgTopChain = 0 |
list of Histograms | |
static StMaker * | fgStChain = 0 |
pointer to top StChain | |
static StMaker * | fgFailedMaker = 0 |
current pointer to StChain | |
static StTestMaker * | fgTestMaker = 0 |
current pointer to failed maker | |
static Int_t | fgTallyMaker [kStFatal+1] = {0,0,0,0,0} |
Static Protected Attributes inherited from TDataSet | |
static TDataSet * | fgMainSet = &mainSet |
Slow simulator for EEMC.
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.
Starting with version 2.0, improvements have been made to the EEMC simulation:
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.
Definition at line 137 of file StEEmcSlowMaker.h.
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().
|
inline |
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().
|
virtual |
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().
|
inline |
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.
|
inline |
Set the energy lost by one MIP in a pre or postshower layer [GeV].
Definition at line 279 of file StEEmcSlowMaker.h.
|
inline |
Set the energy lost by one MIP in an SMD strip [GeV].
Definition at line 269 of file StEEmcSlowMaker.h.
|
inline |
Sets the number of photoelectrons per mip for the pre/postshower layers
Definition at line 282 of file StEEmcSlowMaker.h.
|
inline |
Set the number of photoelectrons per mip for the specified SMD strip [0..287]
Definition at line 272 of file StEEmcSlowMaker.h.
|
inline |
Sets the number of photoelectrons per mip for all SMD stips to the specified value
Definition at line 275 of file StEEmcSlowMaker.h.
|
inline |
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.
|
inline |
Set the resolution of the single photoelectron peak for the MAPMT's
Definition at line 286 of file StEEmcSlowMaker.h.