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

A cluster maker for the EEMC. More...

Inheritance diagram for StEEmcClusterMaker:
StMaker StMaker TDataSet TDataSet

Public Member Functions

 StEEmcClusterMaker (const Char_t *name="mEEclusters")
 
virtual Int_t Init ()
 Initialize.
 
virtual Int_t Make ()
 Make clusters for this event. More...
 
virtual void Clear (Option_t *opts="")
 Clear clusters for next event. More...
 
void analysis (const Char_t *name)
 Set the name of the ADC–>E maker.
 
void seedEnergy (Float_t energy, Int_t layer=0)
 
void setMaxExtent (Int_t m)
 Maximum distance around seed strip to cluster smd strips.
 
void setMinStrips (Int_t m)
 Minimum number of strips to form a cluster.
 
void setSeedFloor (Float_t f=2.0)
 
Int_t numberOfClusters (Int_t sec, Int_t layer) const
 Return number of clusters for a given sector, layer.
 
Int_t numberOfSmdClusters (Int_t sec, Int_t plane) const
 Return number of smd clusters for a given sector, plane.
 
StEEmcClustercluster (Int_t sec, Int_t layer, Int_t index)
 Return a specific cluster from a given sector, layer.
 
const StEEmcClustercluster (Int_t sec, Int_t layer, Int_t index) const
 
StEEmcSmdClustersmdcluster (Int_t sec, Int_t plane, Int_t index)
 return a specific cluster from a given sector, plane
 
const StEEmcSmdClustersmdcluster (Int_t sec, Int_t plane, Int_t index) const
 
StEEmcClustercluster (const StEmcCluster *cl)
 Given a StEmcCluster, return the StEEmcCluster where it came from.
 
const StEEmcClustercluster (const StEmcCluster *cl) const
 
StEEmcSmdClustersmdcluster (const StEmcCluster *cl)
 Given a StEmcCluster, return the StEEmcSmdCluster where it came from.
 
const StEEmcSmdClustersmdcluster (const StEmcCluster *cl) const
 
StEEmcClusterVec_t & clusters (Int_t sec, Int_t layer)
 Return a vector of tower clusters.
 
const StEEmcClusterVec_t & clusters (Int_t sec, Int_t layer) const
 
StEEmcSmdClusterVec_t & smdclusters (Int_t sec, Int_t plane)
 Return a vector of smd clusters.
 
const StEEmcSmdClusterVec_t & smdclusters (Int_t sec, Int_t plane) const
 
void setFillStEvent ()
 
void suppress (Int_t n=2)
 
void skip (Bool_t s=true)
 Skips over strips with "fail" bits set, if true.
 
void loose (Bool_t l=true)
 Loose cuts (see code)
 
void print () const
 Event summary.
 
 StEEmcClusterMaker (const Char_t *name="mEEclusters")
 
Int_t Init ()
 
Int_t Make ()
 
void Clear (Option_t *opts="")
 User defined functions.
 
void analysis (const Char_t *name)
 Set the name of the ADC–>E maker.
 
void seedEnergy (Float_t energy, Int_t layer=0)
 
void setMaxExtent (Int_t m)
 Maximum distance around seed strip to cluster smd strips.
 
void setSeedFloor (Float_t f=2.0)
 
Int_t numberOfClusters (Int_t sec, Int_t layer)
 Return number of clusters for a given sector, layer.
 
Int_t numberOfSmdClusters (Int_t sec, Int_t plane)
 Return number of smd clusters for a given sector, plane.
 
StEEmcCluster cluster (Int_t sec, Int_t layer, Int_t index)
 Return a specific cluster from a given sector, layer.
 
StEEmcSmdCluster smdcluster (Int_t sec, Int_t plane, Int_t index)
 return a specific cluster from a given sector, plane
 
StEEmcCluster cluster (StEmcCluster *cl)
 
StEEmcSmdCluster smdcluster (StEmcCluster *cl)
 
StEEmcClusterVec_t clusters (Int_t sec, Int_t layer)
 Return a vector of tower clusters.
 
StEEmcSmdClusterVec_t smdclusters (Int_t sec, Int_t plane)
 Return a vector of smd clusters.
 
void setFillStEvent ()
 
void suppress ()
 Suppress cluster splitting.
 
void print ()
 
- Public Member Functions inherited from StMaker
 StMaker (const char *name="", const char *dummy=0)
 Constructor & Destructor.
 
virtual Int_t IsChain () const
 
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)
 
virtual const char * GetCVS () const
 
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
 

Protected Member Functions

virtual Bool_t buildTowerClusters ()
 Constructs tower clusters. More...
 
virtual Bool_t buildSmdClusters ()
 Constructs smd clusters. More...
 
void fillStEvent ()
 Fills StEvent cluster collections if the option is selected. More...
 
Bool_t verifyStEvent () const
 
 ClassDef (StEEmcClusterMaker, 1)
 
Bool_t buildTowerClusters ()
 Constructs tower clusters.
 
Bool_t buildSmdClusters ()
 Constructs smd clusters.
 
void fillStEvent ()
 Fills StEvent cluster collections if the option is selected.
 
Bool_t verifyStEvent ()
 
 ClassDef (StEEmcClusterMaker, 1)
 
- 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.
 

Protected Attributes

Int_t mClusterId
 Keep track of clusters.
 
Int_t mSuppress
 Supress seeds adjacent to clusters.
 
Bool_t mSkip
 Skip strips if failbit set.
 
Bool_t mLoose
 Loose cuts option.
 
std::vector< std::vector
< StEEmcTowerVec_t > > 
mSeedTowers
 
std::vector< std::vector
< StEEmcClusterVec_t > > 
mTowerClusters
 
std::vector< std::vector
< StEEmcSmdClusterVec_t > > 
mSmdClusters
 
Int_t mNumberOfClusters [6]
 Counts clusters for full eemc, 0=T, 1=P, 2=Q, 3=R, 4=U, 5=V.
 
Float_t mSeedEnergy [6]
 Seed energy for 0=T, 1=P, 2=Q, 3=R, 4=U, 5=V.
 
Int_t mMaxExtent
 Maximum distance from SMD seed strips.
 
Int_t mMinStrips
 Minimum number of smd strips to form seed.
 
Float_t mSeedFloor
 blah...
 
const EEmcGeomSimplemEEtow
 
const EEmcSmdGeommEEsmd
 
const EEmcSmdMapmEEmap
 
TString mAnalysisName
 ADC–>E maker name.
 
const StEEmcA2EMakermEEanalysis
 ADC–>E maker.
 
Bool_t mFillStEvent
 Option to fill StEvent.
 
std::map< const StEmcCluster
*, StEEmcCluster
mEtoEE
 Map StEEmcClusters to StEmcClusters.
 
std::map< const StEmcCluster
*, StEEmcSmdCluster
mEtoEEsmd
 ... and for smd clusters
 
Bool_t mSuppress
 
EEmcGeomSimplemEEtow
 Geometry classes.
 
EEmcSmdGeommEEsmd
 
EEmcSmdMapmEEmap
 
StEEmcA2EMakermEEanalysis
 ADC–>E maker.
 
std::map< StEmcCluster
*, StEEmcCluster
mEtoEE
 Map StEEmcClusters to StEmcClusters.
 
std::map< StEmcCluster
*, StEEmcSmdCluster
mEtoEEsmd
 
- Protected Attributes inherited from StMaker
TDataSetm_DataSet
 
TDataSetm_ConstSet
 
TDataSetm_GarbSet
 
TDataSetm_Inputs
 
TDataSetm_Ouputs
 list of logInput:ActualInput
 
TDataSetm_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.
 
StMemStatfMemStatMake
 Timer object.
 
StMemStatfMemStatClear
 StMemStat for Make.
 
Int_t fStatus
 StMemStat for Clear.
 
StMessMgrfLogger
 Maker status.
 
StTurnLoggerfLoggerHold
 
- Protected Attributes inherited from TDataSet
TDataSetfParent
 
TSeqCollection * fList
 

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 }
 
- 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 ()
 
- Public Attributes inherited from StMaker
enum StMaker:: { ... }  EModule_return_Status
 
- Static Protected Member Functions inherited from TDataSet
static EDataSetPass SortIt (TDataSet *ds)
 
static EDataSetPass SortIt (TDataSet *ds, void *user)
 
- 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

A cluster maker for the EEMC.

This class produces clusters of EEMC towers, pre- and postshower elements and smd strips.

Author
Jason C. Webb
Date:
2014/06/25 14:57:36
Revision:
1.9

Tower, pre- and postshower algorithm

The clustering-algorithm used for tower clusters (as well as preshower and postshower clusters) is the Minesweeper algorithm originally developed by Jan Balewski.

The SMD Algorithm

The SMD clustering algorithm starts by finding all strips which exceed a user-specified seed threshold. These strips are sorted by energy, and we work from the most energetic seed to the least energetic seed.

Strips adjacent to the smd seed are added to the cluster and removed from the pool of seed strips. The number of adjacent strips added is specified by the user in the setMaxExtent(max) method.

Once a cluster is identified, the seed threshold is raised in the vicinity of that cluster. For details, see buildSmdClusters().

SMD Cluster Cuts

In order to form a cluster, we require a minimum of three smd strips. Fewer strips suggests a MIP, although low-energy EM showers (<~ 1 GeV) can deposit energy in only two consecutive smd strips.

The user may also specify the suppress() option for the cluster maker. When this option is used, the two smd strips adjacent to the cluster are removed from the pool of smd seed strips. This reduces the effects of false cluster splitting, i.e. where a fluctuation in the size of the EM shower combined with the fixed size of the cluster leads to the formation of a false smd cluster.

Definition at line 17 of file StEEmcClusterMaker.h.

Constructor & Destructor Documentation

StEEmcClusterMaker::StEEmcClusterMaker ( const Char_t *  name = "mEEclusters")

by default, do not populate the StEmcClusterCollection

default, do not supress seeds adjacent to clusters

each cluster (tower, pre/post, smd) are assigned a unique id in the order in which they are collected

Set default seed energies

Initialize storage banks for tower and SMD clusters. Both will be stored sector-wise and layer-wise.

Tower clusters are stored according to the sector in which we find their seed tower.

Layers: T=0, P=1, Q=2, R=3 / Planes: U=0, V=1

mTowerClusters[sector][layer] returns vector of tower clusters mSmdClusters[sector][plane] returns vector of SMD clusters

Definition at line 68 of file StEEmcClusterMaker.cxx.

References mClusterId, mEEmap, mEEsmd, mEEtow, mFillStEvent, mLoose, mMaxExtent, mMinStrips, mSeedFloor, mSeedTowers, mSkip, mSmdClusters, mSuppress, mTowerClusters, and seedEnergy().

Member Function Documentation

Bool_t StEEmcClusterMaker::buildSmdClusters ( )
protectedvirtual

Constructs smd clusters.

Loop over all sectors

Loop over all planes

Try to cut down on noice around identified gammas

Get list of strips

Sort by energy

Order in descending energy

We'll flag each seed strip

Iterate over strips and find seeds

We always ignore the corners of the planes

Verify that this is a good strip

Verify that this strip exceeds the floor by the specified seed threshold. If not, punt

Flag this as a seed strip

LOOSE_CUTS is an adhoc shower shape, where we try to suppress clusters if they are likely a fluctuation in the shower profile of an EM shower

Set a "floor" around this strip

Within +/- 2 strips, find no other seeds

Within +/- 4 strips, Floor is 20% of seed

Within +/- 10 strips, Floor i 10% of seed

Within +/- 20 strips, floor is 5% of seed

Now for each seed strip, add all contiguous, adjacent SMD strips out to +/- 3 strips on either side. Continuity is broken if strip falls below Nsigma threshold and is not marked as dead.

Verify that this seed is not owned by another cluster

This seed is now the property of a cluster

Create our cluster

And give it the strip

Now go +/- 3 strips on either side and add them to the cluster, respecting continuity etc...

Get the strip

Break if not continuous (and not dead)

Mark this strip as owned

Add to cluster

Get the strip

Break if not continuous (and not dead)

Mark this strip as owned

Add to cluster

Push the cluster into our storage vector

Definition at line 326 of file StEEmcClusterMaker.cxx.

References cluster(), StEEmcElement::energy(), StEEmcElement::fail(), StEEmcStrip::index(), StEEmcSmdCluster::key(), mClusterId, mEEanalysis, mMaxExtent, mMinStrips, mNumberOfClusters, mSeedEnergy, mSeedFloor, mSkip, mSmdClusters, mSuppress, StEEmcSmdCluster::strip(), StEEmcA2EMaker::strip(), and StEEmcA2EMaker::strips().

Referenced by Make().

Bool_t StEEmcClusterMaker::buildTowerClusters ( )
protectedvirtual

Constructs tower clusters.

Current algo only populates tower clusters, using Jan's "minesweeper" algorithm (apologies to Bill Gates).

Loop over layers to go here... maybe above init of weights

Weights for dividing energy of towers among the tower-only clusters, like Jan's algorithm.

Temp storage for clusters

Get list of towers

Order according to energy (STL sort is fast, N log(N))

Order descending in energy

Find the last tower which exceeds see threshold (actually, "last" will be the first tower below the seed threshold).

store seed towers by layer, sector <<< this breaks, gives an "abort", which I assume means that we're trying to push a tower into a nonexistant vector... did I maybe get the order wrong???

We have run out of seeds here

This seed tower is adjacent to another seed tower and will be clustered with that one. No incrementation for now. (Future, we may allow this to be a seed if there's an SMD response beneath it, then use tower-sharing shape to divide...)

loop over neighboring towers and increment weight for this tower with the energy of the seed tower

Loop over towers again

We've run out of seeds

If the weight for this tower has been incremented, then it's adjacent to a more energetic tower and already is clustered with it.

set momentum and a unique key

Definition at line 178 of file StEEmcClusterMaker.cxx.

References StEEmcCluster::add(), cluster(), StEEmcElement::energy(), StEEmcTower::etabin(), EEmcGeomSimple::getTowerCenter(), StEEmcTower::index(), mClusterId, mEEanalysis, mEEtow, mNumberOfClusters, StEEmcCluster::momentum(), mSeedEnergy, mTowerClusters, StEEmcElement::name(), StEEmcTower::neighbor(), StEEmcTower::numberOfNeighbors(), StEEmcTower::print(), StEEmcCluster::print(), StEEmcTower::sector(), and StEEmcTower::subsector().

Referenced by Make().

void StEEmcClusterMaker::Clear ( Option_t *  opts = "")
virtual

Clear clusters for next event.

Clear cluster storage

Reimplemented from StMaker.

Definition at line 158 of file StEEmcClusterMaker.cxx.

References StMaker::Clear(), mClusterId, mNumberOfClusters, mSmdClusters, and mTowerClusters.

StEEmcCluster StEEmcClusterMaker::cluster ( StEmcCluster cl)
inline

Given a StEmcCluster, return the StEEmcCluster from whence it came.

Definition at line 53 of file StEEmcClusterMaker.h.

References mEtoEE.

void StEEmcClusterMaker::fillStEvent ( )
protected

Fills StEvent cluster collections if the option is selected.

First the eemc tower clusters

If we found clusters, create a cluster collection for this detector. Otherwise, nullify the cluster collection, otherwise we run into an assert somewhere out in "STAR" land... or maybe not,... no comments in barrel virtual finder...

Obtain the cluster collection from the detector, and prepare to fill it. If it doesn't exist, create it.

Loop over all EEMC sectors and fill collection

Loop over all clusters in this sector

for some reason, this code doesn't work when I call StEEmcCluster::stemc(), but works just fine here....

association between StEmcCluster and my class

now set the collection in the detector

Next the pre and postshower clusters

Loop over all EEMC sectors and fill collection

Loop over PQR

Loop over all clusters in this sector

for some reason, this code doesn't work when I call StEEmcCluster::stemc(), but works just fine here....

Finally the U&V smd clusters

Definition at line 538 of file StEEmcClusterMaker.cxx.

References cluster(), StEEmcCluster::energy(), StEEmcSmdCluster::key(), mEtoEE, mEtoEEsmd, mNumberOfClusters, StEEmcCluster::momentum(), mSmdClusters, mTowerClusters, StEEmcCluster::numberOfTowers(), StEEmcElement::stemc(), StEEmcCluster::stemc(), StEEmcSmdCluster::stemc(), StEEmcSmdCluster::strip(), and StEEmcCluster::tower().

Referenced by Make().

Int_t StEEmcClusterMaker::Make ( )
virtual

The Make() method is the one responsible for calling the maker's InitRun(). Note that that InitRun() is called for real data and if both of the following are true

  • a header exists
  • the run number changes

This is the ONLY place calling the InitRun() routine.

check privilege to skip event

Reimplemented from StMaker.

Int_t StEEmcClusterMaker::Make ( )
virtual

Make clusters for this event.

Warn if we couldn't build tower clusters

Warn if we couldn't build SMD clusters

If the option to fill StEvent is selected, do it

Verify that StEvent is a valid copy

Reimplemented from StMaker.

Definition at line 138 of file StEEmcClusterMaker.cxx.

References buildSmdClusters(), buildTowerClusters(), fillStEvent(), kStOK, kStWarn, StMaker::Make(), mFillStEvent, and verifyStEvent().

void StEEmcClusterMaker::seedEnergy ( Float_t  energy,
Int_t  layer = 0 
)

Set the seed energy for the specified layer where 0=T, 1=P, 2=Q, 3=R, 4=U, 5=V

void StEEmcClusterMaker::seedEnergy ( Float_t  energy,
Int_t  layer = 0 
)
inline

Set the seed energy for the specified layer where 0=T, 1=P, 2=Q, 3=R, 4=U, 5=V

Definition at line 35 of file StEEmcClusterMaker.h.

References mSeedEnergy.

Referenced by StEEmcClusterMaker().

void StEEmcClusterMaker::setFillStEvent ( )
inline

If called, will look for the presence of StEvent and fill the StEmcCollection.

Definition at line 65 of file StEEmcClusterMaker.h.

References mFillStEvent.

void StEEmcClusterMaker::setFillStEvent ( )
inline

If called, will look for the presence of StEvent and fill the StEmcCollection.

Definition at line 75 of file StEEmcClusterMaker.h.

References mFillStEvent.

void StEEmcClusterMaker::setSeedFloor ( Float_t  f = 2.0)

Factor above which an smd strip must exceed the minimum "floor" energy in order to be considered a seed...

void StEEmcClusterMaker::setSeedFloor ( Float_t  f = 2.0)
inline

Factor above which an smd strip must exceed the minimum "floor" energy in order to be considered a seed...

Definition at line 45 of file StEEmcClusterMaker.h.

References mSeedFloor.

StEEmcSmdCluster StEEmcClusterMaker::smdcluster ( StEmcCluster cl)
inline

Given a StEmcCluster, return the StEEmcSmdCluster from whence it came.

Definition at line 56 of file StEEmcClusterMaker.h.

References mEtoEEsmd.

void StEEmcClusterMaker::suppress ( Int_t  n = 2)
inline

Suppress seeds in the n strips on either side of an already identified smd cluster. Default = 0.

Definition at line 79 of file StEEmcClusterMaker.h.

References mSuppress.

Bool_t StEEmcClusterMaker::verifyStEvent ( )
protected

Verify that StEEmcCluster/StEEmcSmdCluster and StEmcCluster are equivalent

verify tower clusters


Tower-cluster checksum


SMD-cluster checksum


Definition at line 878 of file StEEmcClusterMaker.cxx.

References cluster(), StEEmcCluster::energy(), mNumberOfClusters, numberOfClusters(), numberOfSmdClusters(), and smdcluster().

Bool_t StEEmcClusterMaker::verifyStEvent ( ) const
protected

Verify that StEEmcCluster/StEEmcSmdCluster and StEmcCluster are equivalent

verify tower clusters


Tower-cluster checksum


SMD-cluster checksum


Definition at line 796 of file StEEmcClusterMaker.cxx.

References cluster(), StEEmcCluster::energy(), mNumberOfClusters, numberOfClusters(), numberOfSmdClusters(), and smdcluster().

Referenced by Make().

Member Data Documentation

const EEmcSmdMap* StEEmcClusterMaker::mEEmap
protected
  • pointer to tower to smd map

Definition at line 142 of file StEEmcClusterMaker.h.

Referenced by StEEmcClusterMaker().

const EEmcSmdGeom* StEEmcClusterMaker::mEEsmd
protected
  • pointer to smd geometry

Definition at line 141 of file StEEmcClusterMaker.h.

Referenced by StEEmcClusterMaker().

const EEmcGeomSimple* StEEmcClusterMaker::mEEtow
protected
  • pointer to tower geometry

Definition at line 140 of file StEEmcClusterMaker.h.

Referenced by buildTowerClusters(), and StEEmcClusterMaker().

std::vector< std::vector< StEEmcTowerVec_t > > StEEmcClusterMaker::mSeedTowers
protected

mSeedTowers[sec][layer] provides a list of tower elements which exceeded the user-specified seed.

Definition at line 104 of file StEEmcClusterMaker.h.

Referenced by StEEmcClusterMaker().

std::vector< std::vector< StEEmcSmdClusterVec_t > > StEEmcClusterMaker::mSmdClusters
protected

mSmdClusters[sec][plane] provides a list of SMD clusters in the given sector for the given plane

Definition at line 112 of file StEEmcClusterMaker.h.

Referenced by buildSmdClusters(), Clear(), fillStEvent(), numberOfSmdClusters(), smdcluster(), smdclusters(), and StEEmcClusterMaker().

std::vector< std::vector< StEEmcClusterVec_t > > StEEmcClusterMaker::mTowerClusters
protected

mTowerClusters[sec][layer] provides list of tower clusters at specified layer in the given sector, where the sector is determined by the seed tower.

Definition at line 109 of file StEEmcClusterMaker.h.

Referenced by buildTowerClusters(), Clear(), cluster(), clusters(), fillStEvent(), numberOfClusters(), and StEEmcClusterMaker().


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