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
StEEmcPointMaker Class Reference

Class for building points from smd clusters. More...

Inheritance diagram for StEEmcPointMaker:
StMaker StEEmcPointUtils StMaker TDataSet TDataSet StEEmcPointFitMaker StEEmcPointTreeMaker

Public Member Functions

 StEEmcPointMaker (const Char_t *name)
 
Int_t Init ()
 Initialize.
 
Int_t Make ()
 Build points for this event. More...
 
void Clear (Option_t *opts="")
 Clear old points.
 
void analysis (const Char_t *name)
 Set adc to energy maker.
 
void clusters (const Char_t *name)
 Set cluster maker.
 
void towerThreshold (Float_t t)
 
void smdMatch (Float_t s)
 Sets an smd matching requirement, Eu>s*Ev&&Ev>2*Eu.
 
StEEmcPointVec_t points ()
 Return vector of all points found in endcap.
 
Int_t numberOfPoints ()
 Return number of points.
 
StEEmcPoint point (Int_t ipoint)
 Return a specified point.
 
StEEmcPointVec_t smdPoints ()
 
Int_t numberOfSmdPoints ()
 Return the total number of smd points.
 
StEEmcPoint smdPoint (Int_t ip)
 Return a specified smd point.
 
Float_t energySeen ()
 Total energy seen by the algorithm.
 
void setFillStEvent ()
 
void setEnergyMode (Int_t mode)
 
void setLimit (Int_t l)
 Number of iterations for tower-shape mode.
 
StEEmcPoint point (StEmcPoint *p)
 
 StEEmcPointMaker (const Char_t *name)
 
Int_t Init ()
 
Int_t Make ()
 
void Clear (Option_t *opts="")
 User defined functions.
 
void analysis (const Char_t *name)
 
void clusters (const Char_t *name)
 
void towerThreshold (Float_t t)
 
StEEmcPointVec_t points ()
 Return vector of all points found in endcap.
 
Int_t numberOfPoints ()
 Return number of points.
 
StEEmcPoint point (Int_t ipoint)
 Return a specified point.
 
Float_t energySeen ()
 
void setFillStEvent ()
 
void setEnergyMode (Int_t mode)
 
void setLimit (Int_t l)
 
StEEmcPoint point (StEmcPoint *p)
 
- 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
 
- Public Member Functions inherited from StEEmcPointUtils
Bool_t opening_angle_cut (StEEmcPoint &p1, StEEmcPoint &p2, Float_t energy, Float_t mass=0.135, Float_t frac=0.3)
 
StEEmcPointVec_t find_best_points (StEEmcPointVec_t points, Float_t em_energy, Bool_t &stat, Float_t &chi2, Int_t npoint=1)
 
Bool_t no_parallel_smd_clusters (StEEmcPointVec_t points, Int_t npoint)
 

Protected Member Functions

void fillStEvent ()
 Fills the StEmcPoint collection. More...
 
void verifyStEvent ()
 Checks that StEvent is properly saved.
 
StEEmcPointVec_t buildSmdPoints (Int_t sector, StEEmcSmdClusterVec_t &u, StEEmcSmdClusterVec_t &v)
 build smd points and associations between smd points and clusters More...
 
Bool_t findPoints (Int_t sector, StEEmcSmdClusterVec_t u, StEEmcSmdClusterVec_t v, StEEmcPointVec_t &p)
 find points in the endcap More...
 
void shareEnergy ()
 Divide energy of eemc towers between identified smd points using fit (doesn't work) More...
 
void shareEnergySimple ()
 Divide energy of eemc towers between identified smd points (doesn't work as well as smd algo) More...
 
void shareEnergySmd ()
 Divide energy of eemc towers between identified smd points in proportion to the smd energy. More...
 
void countRelatives ()
 Determine the number of points which share tower energy with another point. More...
 
void removeCluster (StEEmcSmdClusterVec_t &clusters, Int_t key)
 Remove a cluster from the list of clusters.
 
Float_t fracp2t (StEEmcPoint &p, StEEmcTower &t)
 
 ClassDef (StEEmcPointMaker, 1)
 Makes class available to root.
 
void fillStEvent ()
 Fills the StEmcPoint collection.
 
void verifyStEvent ()
 
StEEmcPointVec_t buildSmdPoints (Int_t sector, StEEmcSmdClusterVec_t &u, StEEmcSmdClusterVec_t &v)
 build smd points and associations between smd points and clusters
 
Bool_t findPoints (Int_t sector, StEEmcSmdClusterVec_t u, StEEmcSmdClusterVec_t v, StEEmcPointVec_t &p)
 find points in the endcap
 
void shareEnergy ()
 Divide energy of eemc towers between identified smd points.
 
void shareEnergySimple ()
 
void shareEnergySmd ()
 
void countRelatives ()
 
void removeCluster (StEEmcSmdClusterVec_t &clusters, Int_t key)
 
Float_t fracp2t (StEEmcPoint &p, StEEmcTower &t)
 
 ClassDef (StEEmcPointMaker, 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

TString mNameAnalysis
 
TString mNameClusters
 
StEEmcA2EMakermEEanalysis
 ADC2E.
 
StEEmcClusterMakermEEclusters
 Clusters.
 
EEmcGeomSimplemEEtow
 Tower geometry.
 
EEmcSmdGeommEEsmd
 Smd geometry.
 
EEmcSmdMapmEEmap
 Tower to smd map.
 
StEEmcPointVec_t mPoints
 All fully reconstructed points.
 
StEEmcPointVec_t mSmdPoints
 SMD only points.
 
std::map< StEEmcSmdCluster,
StEEmcPointVec_t > 
mUclusters2points
 maps smd clusters to points
 
std::map< StEEmcSmdCluster,
StEEmcPointVec_t > 
mVclusters2points
 maps smd clusters to points
 
Float_t mTowerThreshold
 
Float_t mSmdMatch
 
Float_t mEseen
 Energy seen by the algorithm.
 
Bool_t mFillStEvent
 Option to fill StEvent.
 
Int_t mEnergyMode
 Option for dividing energy.
 
Int_t mLimit
 How many iterations for the tower energy sharing mode.
 
std::map< StEmcPoint
*, StEEmcPoint
mEtoEE
 Map connecting StEEmcPoint to StEmcPoint.
 
- 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

Class for building points from smd clusters.

This class produces points using smd clusters found from an instance of StEEmcClusterMaker.

A point is defined as the coincidence of a cluster in each smd plane with an active tower.

Points are found in the following order:

  1. Loop over all SMD clusters beginning with those closest to the beam and working radially outwards.
  2. Any unique U,V pair below an active tower is considered to be a point regardless of the energy match between the pair. When we find such a match we remove the U and V clusters from the pool of smd clusters and search for another match. (goto 1).
  3. If no unique pair was found, we select the U,V pair with the closest match in energy between the two planes. We remove the pair of clusters from the pool of clusters, and repeat. (goto 1).
  4. The algo procedes to the next sector.

Definition at line 20 of file StEEmcPointMaker.h.

Constructor & Destructor Documentation

StEEmcPointMaker::StEEmcPointMaker ( const Char_t *  name)

Initialize the geometry packages

Definition at line 53 of file StEEmcPointMaker.cxx.

References mEEmap, mEEsmd, mEEtow, mEnergyMode, mFillStEvent, mLimit, mSmdMatch, and mTowerThreshold.

Member Function Documentation

StEEmcPointVec_t StEEmcPointMaker::buildSmdPoints ( Int_t  sector,
StEEmcSmdClusterVec_t &  u,
StEEmcSmdClusterVec_t &  v 
)
protected

build smd points and associations between smd points and clusters

determine which tower this smd point is under

invalid intersection

happy intersection

well, maybe and maybe not. make sure that the candidate point lies in the same sector

to form a valid smd point, we require a struck tower, or a "fail" bit to be set and one of the other tower detectors to fire (pre/postshower).

furthermore, we may require a degree of energy matching between the smd points

Add to list of smd only points

Definition at line 158 of file StEEmcPointMaker.cxx.

References StEEmcPoint::cluster(), StEEmcElement::energy(), StEEmcPoint::energy(), StEEmcElement::fail(), EEmcSmdGeom::getIntersection(), EEmcGeomSimple::getTower(), mEEanalysis, mEEsmd, mEEtow, mSmdMatch, mSmdPoints, mTowerThreshold, points(), StEEmcPoint::position(), StEEmcPoint::tower(), and StEEmcA2EMaker::tower().

Referenced by findPoints().

void StEEmcPointMaker::countRelatives ( )
protected

Determine the number of points which share tower energy with another point.

Loop over all points and count how many are beneath each tower

Loop over all points and set the number of "relatives"

Definition at line 835 of file StEEmcPointMaker.cxx.

References StEEmcTower::index(), mPoints, StEEmcTower::neighbor(), and StEEmcTower::numberOfNeighbors().

Referenced by Make().

void StEEmcPointMaker::fillStEvent ( )
protected

Fills the StEmcPoint collection.

loop over all eemc points

Definition at line 763 of file StEEmcPointMaker.cxx.

References mEtoEE, mPoints, and point().

Referenced by Make().

Bool_t StEEmcPointMaker::findPoints ( Int_t  sector,
StEEmcSmdClusterVec_t  u,
StEEmcSmdClusterVec_t  v,
StEEmcPointVec_t &  p 
)
protected

find points in the endcap

Temp vector to store candidate points

Sort from closest to the beam to furthest

build smd points

nothing left to do here

presort smd points by chi^2.

create associative arrays matching smd clusters to points, or in this case index into the smdpoints array. NOTE– from here on, it is important that smdpoints do not get sorted.

look for smd clusters which match a single smd point. where we find such unique matches, we add the point to the list of found points, and remove the matching pair of smd clusters from the list of clusters. Bool_t go = false;

Get clusters and determine which plane we're working with

Get a reference to the cluster we're working with

Deterimine how many points are matched to this cluster

cluster is orphaned, no matching V cluster, or cluster matches multiple points, then we go to the next cluster

When set, it means we have found an SMD cluster which uniquely matches an smd point. Thus, we will not proceed to the second-stage logic which determines ambiguous matches using energies of clusters go=true;

push the point into the list of points and remove the associated pair of clusters

add to list of candidate points

Loop over candidate points and find best "chi^2" from the potential 1:1 matches

If we found a candidate match, add to the list of points and call the algorithm recursively. Then we return. This is a "cute" algorithm (i.e. hard to debug). The idea is that each call to findPoints is responsible for finding 1 and only 1 point, then passing the remaining smd clusters to the next iteration of the algorithm.

———<<<<<<<<< stage 2 >>>>>>>>>————

second stage of point finding. we loop over all remaining clusters. when we have a cluster which matches 2 or more points, we will select the point with the better chi^2 (best energy match between the two smd planes).

Get clusters and determine which plane we're working with

Get a reference to the cluster we're working with

Deterimine how many points are matched to this cluster

cluster is orphaned or has a unique match, we'll catch it on the next pass

push the point with lowest chi2 into the list of candidate points

add to list of candidate points

Loop over candidate points and find best "chi^2" from the potential 1:1 matches

If we found a candidate match, add to the list of points and call the algorithm recursively. Then we return. This is a "cute" algorithm (i.e. hard to debug). The idea is that each call to findPoints is responsible for finding 1 and only 1 point, then passing the remaining smd clusters to the next iteration of the algorithm.

Definition at line 265 of file StEEmcPointMaker.cxx.

References buildSmdPoints(), StEEmcPoint::cluster(), StEEmcSmdCluster::key(), and removeCluster().

Referenced by Make().

Float_t StEEmcPointMaker::fracp2t ( StEEmcPoint p,
StEEmcTower t 
)
protected

return the fraction of energy expected in tower due to the presence of a point, based on tower energy response function

Float_t StEEmcPointMaker::fracp2t ( StEEmcPoint p,
StEEmcTower t 
)
protected

return the fraction of energy expected in tower due to the presence of a point, based on tower energy response function

Returns the fraction of the point's energy expected in tower

if the tower is not a neighbor of the tower beneath the point, return nothing

Get eta and phibin for this tower

Get the eta/phi bin for the tower beneath the point

Get the position of the point on the endcap. If the point is off the endcap, we're hosed. but just return 0.

Position of the point in fractional eta,phi space

Definition at line 622 of file StEEmcPointMaker.cxx.

References StEEmcTower::etabin(), EEmcGeomSimple::getTower(), StEEmcTower::isNeighbor(), mEEtow, StEEmcTower::phibin(), StEEmcPoint::position(), and StEEmcPoint::tower().

Referenced by shareEnergy(), and shareEnergySimple().

Int_t StEEmcPointMaker::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.

Reimplemented in StEEmcPointTreeMaker.

Int_t StEEmcPointMaker::Make ( )
virtual

Build points for this event.

First phase of the game – build smd points. All pairs of U & V clusters which cross beneath a struck (or dead) tower are added to the list of smd points. We also keep tracks of the associations between the

Get smd clusters

Sort from closest to the beam to furthest

Point energies were initially set to be the energy deposited in the SMD. We will now overwrite these energies, calculating the equivalent EM energy using a sampling fraction of 0.7% per smd plane

do energy sharing

count the number of "related" points

Reimplemented from StMaker.

Reimplemented in StEEmcPointTreeMaker.

Definition at line 83 of file StEEmcPointMaker.cxx.

References countRelatives(), fillStEvent(), findPoints(), kStOK, mEEclusters, mEnergyMode, mFillStEvent, mPoints, shareEnergySimple(), shareEnergySmd(), StEEmcClusterMaker::smdclusters(), and verifyStEvent().

Referenced by StEEmcPointTreeMaker::Make().

StEEmcPoint StEEmcPointMaker::point ( StEmcPoint p)
inline

Given an StEmcPoint, return the StEEmcPoint from whence it came

Definition at line 64 of file StEEmcPointMaker.h.

References mEtoEE.

StEEmcPoint StEEmcPointMaker::point ( StEmcPoint p)
inline

Given an StEmcPoint, return the StEEmcPoint from whence it came

Definition at line 79 of file StEEmcPointMaker.h.

References mEtoEE.

void StEEmcPointMaker::setEnergyMode ( Int_t  mode)
inline

Energy sharing mode.

Parameters
mode,:0=smd, 1=tower-shape (iterated).

Definition at line 58 of file StEEmcPointMaker.h.

References mEnergyMode.

void StEEmcPointMaker::setEnergyMode ( Int_t  mode)
inline

Energy sharing mode.

Parameters
mode,:0=smd, 1=tower-shape (iterated).

Definition at line 72 of file StEEmcPointMaker.h.

References mEnergyMode.

void StEEmcPointMaker::setFillStEvent ( )
inline

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

Definition at line 54 of file StEEmcPointMaker.h.

References mFillStEvent.

void StEEmcPointMaker::setFillStEvent ( )
inline

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

Definition at line 68 of file StEEmcPointMaker.h.

References mFillStEvent.

void StEEmcPointMaker::shareEnergy ( )
protected

Divide energy of eemc towers between identified smd points using fit (doesn't work)

Perform energy sharing between points. We fit the tower response (analytically minimize chi^2) for the identified smd points.

nothing to do here

Loop over all hit towers

Get hit tower

Loop over all hit points

Fraction of point's energy expected within the tower

Running sum of energy fraction times tower energy

Fraction of point's energy expected within the tower

Invert the matrix

Now solve for the energies of the points

Definition at line 531 of file StEEmcPointMaker.cxx.

References StEEmcElement::energy(), fracp2t(), StEEmcA2EMaker::hittower(), mEEanalysis, mPoints, and StEEmcA2EMaker::numberOfHitTowers().

void StEEmcPointMaker::shareEnergySimple ( )
protected

Divide energy of eemc towers between identified smd points (doesn't work as well as smd algo)

Sum of energy from each point predicted to be within each tower

Loop over all points and increment the predicted energy in each tower from each point

loop over neighboring towers

Loop over all points and divide energy of each tower between the points according to the ratio of the energy of the point in the tower to the total predicted

loop over neighboring towers and repeat loop over neighboring towers

Set the energy of this point

Definition at line 662 of file StEEmcPointMaker.cxx.

References StEEmcElement::energy(), StEEmcPoint::energy(), StEEmcElement::fail(), fracp2t(), StEEmcTower::index(), mEseen, mLimit, mPoints, StEEmcTower::neighbor(), StEEmcTower::numberOfNeighbors(), point(), StEEmcElement::stat(), and StEEmcPoint::tower().

Referenced by StEEmcPointFitMaker::Make(), and Make().

void StEEmcPointMaker::shareEnergySmd ( )
protected

Divide energy of eemc towers between identified smd points in proportion to the smd energy.

Sum of the smd-energy of all points which are in or adjacent to tower with a given index.

Now loop over all points and divide energy of each tower in proportion to the smd response

Definition at line 872 of file StEEmcPointMaker.cxx.

References StEEmcElement::energy(), StEEmcPoint::energy(), StEEmcTower::index(), mEEanalysis, mPoints, StEEmcTower::neighbor(), StEEmcTower::numberOfNeighbors(), point(), StEEmcPoint::tower(), and StEEmcA2EMaker::tower().

Referenced by StEEmcPointFitMaker::Make(), and Make().

StEEmcPointVec_t StEEmcPointMaker::smdPoints ( )
inline

Return vector of smd only points found in endcap (all u,v crossings beneath an active tower or a "failed" tower with signal in one other layer.)

Definition at line 172 of file StEEmcPointMaker.h.

References mSmdPoints.

void StEEmcPointMaker::towerThreshold ( Float_t  t)
inline

Sets the miminimum energy for matching a pair of smd clusters to a tower. SMD pairs which cross beneath a tower which falls below the threshold will not form a point. Default is zero.

Definition at line 40 of file StEEmcPointMaker.h.

References mTowerThreshold.

void StEEmcPointMaker::towerThreshold ( Float_t  t)
inline

Sets the miminimum energy for matching a pair of smd clusters to a tower. SMD pairs which cross beneath a tower which falls below the threshold will not form a point. Default is zero.

Definition at line 42 of file StEEmcPointMaker.h.

References mTowerThreshold.

Member Data Documentation

TString StEEmcPointMaker::mNameAnalysis
protected
  • name of the adc to energy maker

Definition at line 85 of file StEEmcPointMaker.h.

Referenced by analysis(), and Init().

TString StEEmcPointMaker::mNameClusters
protected
  • name of the cluster make

Definition at line 86 of file StEEmcPointMaker.h.

Referenced by clusters(), and Init().

Float_t StEEmcPointMaker::mSmdMatch
protected

Maximum allowed value for |Eu-Ev|/2(Eu+Ev) to form a candidate smd point in buildSmdPoints(). Cut is applied before U,V clusters are matched in findPoints().

Definition at line 147 of file StEEmcPointMaker.h.

Referenced by buildSmdPoints(), smdMatch(), and StEEmcPointMaker().

Float_t StEEmcPointMaker::mTowerThreshold
protected

Minimum tower threshold to consider a U,V pair of clusters a valid smd point. Cut removes U,V pairs from being considered for association in findPoints().

Definition at line 143 of file StEEmcPointMaker.h.

Referenced by buildSmdPoints(), StEEmcPointMaker(), and towerThreshold().


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