
Public Member Functions | |
| StEEmcIUClusterMaker (const Char_t *name="mEEclusters") | |
| Int_t | Init () |
| Initialize. | |
| Int_t | Make () |
| Make clusters for this event. | |
| void | Clear (Option_t *opts="") |
| Clear clusters for next event. | |
| 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) |
| 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. | |
| Int_t | TnumberOfSmdClusters (Int_t sec, Int_t plane) |
| int | numberOfUseed () |
| int | numberOfVseed () |
| int | UStripWidth () |
| int | VStripWidth () |
| float | Tenergyoftower () |
| float | Tenergyofp1 () |
| float | Tenergyofp2 () |
| float | Tenergyofp3 () |
| float | Tenergyofsmdu () |
| float | Tenergyofsmdv () |
| float | UAmplitude () |
| float | VAmplitude () |
| StEEmcIUCluster | cluster (Int_t sec, Int_t layer, Int_t index) |
| Return a specific cluster from a given sector, layer. | |
| StEEmcIUSmdCluster | smdcluster (Int_t sec, Int_t plane, Int_t index) |
| return a specific cluster from a given sector, plane | |
| StEEmcIUCluster | cluster (StEmcCluster *cl) |
| StEEmcIUSmdCluster | smdcluster (StEmcCluster *cl) |
| StEEmcIUClusterVec_t | clusters (Int_t sec, Int_t layer) |
| Return a vector of tower clusters. | |
| StEEmcIUSmdClusterVec_t | smdclusters (Int_t sec, Int_t plane) |
| Return a vector of smd clusters. | |
| void | setFillStEvent () |
| void | suppress (Int_t n=0) |
| 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 () |
| Event summary. | |
Protected Member Functions | |
| 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 (StEEmcIUClusterMaker, 1) | |
| Makes class available to root. | |
Protected Attributes | |
| TH1D * | clusize |
| TH1D * | tclusize |
| TH1D * | cludis |
| 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 < StEEmcIUClusterVec_t > > | mTowerClusters |
| std::vector< std::vector < StEEmcIUSmdClusterVec_t > > | mSmdClusters |
|
std::vector< std::vector < StEEmcIUSmdClusterVec_t > > | TmSmdClusters |
| Int_t | mNumberOfClusters [6] |
| Counts clusters for full eemc, 0=T, 1=P, 2=Q, 3=R, 4=U, 5=V. | |
| Int_t | TmNumberOfClusters [6] |
| 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... | |
| int | countUseed |
| int | uswidth |
| int | vswidth |
| float | eeen |
| int | countVseed |
| float | uamp |
| float | vamp |
| float | ep1 |
| float | ep2 |
| float | ep3 |
| float | esmdu |
| float | esmdv |
| FILE * | fout |
| FILE * | fout2 |
| EEmcGeomSimple * | mEEtow |
| EEmcSmdGeom * | mEEsmd |
| EEmcSmdMap * | mEEmap |
| TString | mAnalysisName |
| ADC-->E maker name. | |
| StEEmcA2EMaker * | mEEanalysis |
| ADC-->E maker. | |
| Bool_t | mFillStEvent |
| Option to fill StEvent. | |
|
std::map< StEmcCluster *, StEEmcIUCluster > | mEtoEE |
| Map StEEmcIUClusters to StEmcClusters. | |
|
std::map< StEmcCluster *, StEEmcIUSmdCluster > | mEtoEEsmd |
| ... and for smd clusters | |
This class produces clusters of EEMC towers, pre- and postshower elements and smd strips.
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 and the default strip number is set to 3 to both sides around a seed strip.
Once a cluster is identified, the seed threshold is raised in the vicinity of that cluster, including a special floor setting described below. For details, see buildSmdClusters().
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.
For Monte Carlo data, you need to switch on define MonteCarloS For real and pythia data, you need to switch off define MonteCarloS
Definition at line 17 of file StEEmcIUClusterMaker.h.
| StEEmcIUClusterMaker::StEEmcIUClusterMaker | ( | 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 71 of file StEEmcIUClusterMaker.cxx.
References mClusterId, mEEmap, mEEsmd, mEEtow, mFillStEvent, mLoose, mMaxExtent, mMinStrips, mSeedFloor, mSeedTowers, mSkip, mSmdClusters, mSuppress, mTowerClusters, and seedEnergy().
| Bool_t StEEmcIUClusterMaker::buildSmdClusters | ( | ) | [protected] |
Constructs smd clusters.
Loop over all sectors
Loop over all planes
Try to cut down on noice around identified gammas
Energy of all strips in plane
Get list of strips
Sort by energy
Order in descending energy
Copy energy of all hit strips into an array
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 or 40% of seed
Within +/- 10 strips, Floor i 10 or 20% 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
Mark this strip as owned
Add to cluster
Get the strip
Mark this strip as owned
Add to cluster
Push the cluster into our storage vector
Definition at line 359 of file StEEmcIUClusterMaker.cxx.
References StEEmcIUSmdCluster::add(), cluster(), StEEmcElement::energy(), StEEmcStrip::index(), mEEanalysis, mMaxExtent, mMinStrips, mSeedEnergy, mSeedFloor, mSkip, mSuppress, StEEmcIUSmdCluster::numberOfStrips(), StEEmcIUSmdCluster::size(), StEEmcIUSmdCluster::strip(), StEEmcA2EMaker::strip(), and StEEmcA2EMaker::strips().
Referenced by Make().
| Bool_t StEEmcIUClusterMaker::buildTowerClusters | ( | ) | [protected] |
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 193 of file StEEmcIUClusterMaker.cxx.
References StEEmcIUCluster::add(), cluster(), StEEmcElement::energy(), StEEmcTower::etabin(), EEmcGeomSimple::getTowerCenter(), StEEmcTower::index(), StEEmcIUCluster::key(), mClusterId, mEEanalysis, mEEtow, mNumberOfClusters, StEEmcIUCluster::momentum(), mSeedEnergy, mTowerClusters, StEEmcElement::name(), StEEmcTower::neighbor(), StEEmcTower::numberOfNeighbors(), StEEmcIUCluster::print(), StEEmcTower::print(), StEEmcTower::sector(), and StEEmcTower::subsector().
Referenced by Make().
| void StEEmcIUClusterMaker::Clear | ( | Option_t * | opts = "" |
) | [virtual] |
Clear clusters for next event.
Clear cluster storage
Reimplemented from StMaker.
Definition at line 167 of file StEEmcIUClusterMaker.cxx.
References mClusterId, mNumberOfClusters, mSmdClusters, and mTowerClusters.
| StEEmcIUCluster StEEmcIUClusterMaker::cluster | ( | StEmcCluster * | cl | ) | [inline] |
Given a StEmcCluster, return the StEEmcIUCluster from whence it came.
Definition at line 78 of file StEEmcIUClusterMaker.h.
References mEtoEE.
| void StEEmcIUClusterMaker::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 StEEmcIUCluster::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 //and layer
for some reason, this code doesn't work when I call StEEmcIUCluster::stemc(), but works just fine here....
Finally the U&V smd clusters
Definition at line 890 of file StEEmcIUClusterMaker.cxx.
References cluster(), StEEmcIUSmdCluster::energy(), StEEmcIUCluster::energy(), StEEmcIUSmdCluster::key(), StEEmcIUCluster::key(), StEEmcIUSmdCluster::mean(), mEtoEE, mEtoEEsmd, mNumberOfClusters, StEEmcIUCluster::momentum(), mSmdClusters, mTowerClusters, StEEmcIUSmdCluster::numberOfStrips(), StEEmcIUCluster::numberOfTowers(), StEEmcIUSmdCluster::stemc(), StEEmcIUCluster::stemc(), StEEmcElement::stemc(), StEEmcIUSmdCluster::strip(), and StEEmcIUCluster::tower().
Referenced by Make().
| Int_t StEEmcIUClusterMaker::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 144 of file StEEmcIUClusterMaker.cxx.
References buildSmdClusters(), buildTowerClusters(), fillStEvent(), kStOK, kStWarn, mFillStEvent, and verifyStEvent().
| void StEEmcIUClusterMaker::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 200 of file StEEmcIUClusterMaker.h.
References mSeedEnergy.
Referenced by StEEmcIUClusterMaker().
| void StEEmcIUClusterMaker::setFillStEvent | ( | ) | [inline] |
If called, will look for the presence of StEvent and fill the StEmcCollection.
Definition at line 90 of file StEEmcIUClusterMaker.h.
References mFillStEvent.
| void StEEmcIUClusterMaker::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 203 of file StEEmcIUClusterMaker.h.
References mSeedFloor.
| StEEmcIUSmdCluster StEEmcIUClusterMaker::smdcluster | ( | StEmcCluster * | cl | ) | [inline] |
Given a StEmcCluster, return the StEEmcIUSmdCluster from whence it came.
Definition at line 81 of file StEEmcIUClusterMaker.h.
References mEtoEEsmd.
| void StEEmcIUClusterMaker::suppress | ( | Int_t | n = 0 |
) | [inline] |
Suppress seeds in the n strips on either side of an already identified smd cluster. Default = 0.
Definition at line 94 of file StEEmcIUClusterMaker.h.
References mSuppress.
| Bool_t StEEmcIUClusterMaker::verifyStEvent | ( | ) | [protected] |
Verify that StEEmcIUCluster/StEEmcIUSmdCluster and StEmcCluster are equivalent
verify tower clusters
------------------------------------------------------------------------
Tower-cluster checksum
------------------------------------------------------------------------
SMD-cluster checksum
-----------------------
Definition at line 1150 of file StEEmcIUClusterMaker.cxx.
References cluster(), StEEmcIUSmdCluster::energy(), StEEmcIUCluster::energy(), mNumberOfClusters, numberOfClusters(), numberOfSmdClusters(), and smdcluster().
Referenced by Make().
EEmcSmdMap* StEEmcIUClusterMaker::mEEmap [protected] |
Definition at line 179 of file StEEmcIUClusterMaker.h.
Referenced by StEEmcIUClusterMaker().
EEmcSmdGeom* StEEmcIUClusterMaker::mEEsmd [protected] |
Definition at line 178 of file StEEmcIUClusterMaker.h.
Referenced by StEEmcIUClusterMaker().
EEmcGeomSimple* StEEmcIUClusterMaker::mEEtow [protected] |
Definition at line 177 of file StEEmcIUClusterMaker.h.
Referenced by buildTowerClusters(), and StEEmcIUClusterMaker().
std::vector< std::vector< StEEmcTowerVec_t > > StEEmcIUClusterMaker::mSeedTowers [protected] |
mSeedTowers[sec][layer] provides a list of tower elements which exceeded the user-specified seed.
Definition at line 123 of file StEEmcIUClusterMaker.h.
Referenced by StEEmcIUClusterMaker().
std::vector< std::vector< StEEmcIUSmdClusterVec_t > > StEEmcIUClusterMaker::mSmdClusters [protected] |
mSmdClusters[sec][plane] provides a list of SMD clusters in the given sector for the given plane
Definition at line 131 of file StEEmcIUClusterMaker.h.
Referenced by Clear(), fillStEvent(), numberOfSmdClusters(), print(), smdcluster(), smdclusters(), and StEEmcIUClusterMaker().
std::vector< std::vector< StEEmcIUClusterVec_t > > StEEmcIUClusterMaker::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 128 of file StEEmcIUClusterMaker.h.
Referenced by buildTowerClusters(), Clear(), cluster(), clusters(), fillStEvent(), numberOfClusters(), and StEEmcIUClusterMaker().
1.5.9