
Public Member Functions | |
| StEEmcPointFitMaker (const Char_t *n) | |
| virtual Int_t | Init () |
| Initialize. | |
| virtual Int_t | Make () |
| Process event. | |
| Int_t | FitSector (Int_t s) |
| Fit the specified sector. | |
| virtual void | Clear (Option_t *opts="") |
| Clear the maker. | |
| EEmcSectorFit * | fit (Int_t sec) |
| Return the sector fit for the specified sector. | |
| const EEmcSectorFit * | fit (Int_t sec) const |
| void | doPermutations (Bool_t p) |
| void | print () const |
| Print summary. | |
| void | limit (Int_t lim) |
Protected Member Functions | |
| ClassDef (StEEmcPointFitMaker, 1) | |
Protected Attributes | |
| EEmcSectorFit * | mSectorFit [12] |
| Fits. | |
| Bool_t | mPermutations |
| Do or don't do permutations. | |
| Int_t | mClusterId |
| Int_t | mLimitFits |
| Maximum number of points to fit per sector. | |
This class find EEMC points using a fitting algorithm. The fit is driven by the EEmcSectorFit class, which implements a simultaneous fit to both the U and V smd planes.
The single-plane shower-shape is implemented in the function eeSinglePeak. This shape is fairly standard, i.e. a double-gaussian with constrained mean and constrainded widths. For this algorithm, the relative amplitudes of the two gaussians are fixed. The narrow-component gaussian has a relative amplitude of 0.8, and the wide-component gaussian has a relative amplitude of 0.2. Furthermore we constrain the width of the wide-component to be 3.5 times the width of the narrow component.
In the two-plane simultaneous fit, we fit only three four parameters:
1. A total yield [nmips]
2. A common width [nstrips]
3. A mean U position
4. A mean V position
In order to start the fit to a new photon, we scan both SMD planes for the largest residual energy deposit summed over five consecutive smd strips (the residual energy deposit is simply the energy of the strips in question minus the energy predicted by the fit to the current number of photons). We require that this maximum U,V pair appears beneath an active tower (or a tower with a fail bit set).
Once the maximum in each plane is found, we initialize the fit, using the 5-strip energy, mean and widths to set the initial parameters of the fit. This procedure is repeated until 90% or more of the energy deposited in the smd is accounted for. As each photon is discovered, we try all permutations of one plane versus the other to determine if a better association (although if more than 5 gammas are found, we do not try all permutations as this begins to become too computationally intensive.)
Once we have fit "all" points in an smd plane, we apply a cut -- any point which is w/in 3.5 times the width of the narrow component gaussian must exceed 10% of the energy of the higher-energy point. If it doesn't, then we assume that it is a large angle multiple scatter or a bremstrahlung photon and remove it from consideration.
Definition at line 8 of file StEEmcPointFitMaker.h.
| void StEEmcPointFitMaker::Clear | ( | Option_t * | opts = "" |
) | [virtual] |
Clear the maker.
Delete sector fits
Reimplemented from StEEmcPointMaker.
Definition at line 313 of file StEEmcPointFitMaker.cxx.
References mSectorFit.
| void StEEmcPointFitMaker::doPermutations | ( | Bool_t | p | ) | [inline] |
| p,: | true=try all reco positions, false=no try |
Definition at line 26 of file StEEmcPointFitMaker.h.
References mPermutations.
| Int_t StEEmcPointFitMaker::FitSector | ( | Int_t | s | ) |
Fit the specified sector.
How much energy is in the sector? We will stop finding gammas when we have found 90% of it, or when we can no longer find a good candidate in both planes
Fill histograms for u and v planes
Give the sector fitter pointers to the histograms (note that hU and hV will be deleted with call to ~EEmcSectorFit
we require at least 2 GeV of energy in the sector to continue
scan smd planes for maximum 5-strip residual
punt if no suitable candidates were found
add a candidate photon at this point
perform two plane simultaneous fit
Get the parameters for the last candidate
refit all permutations (up to a point... cpu requirements get too large after 5! (!)
Total energy in fit
array of flags telling us whether a given fit will be spawned as a new point
distance between gamma candidates
Is first gamma a fluctuation of second gamma?
Is second gamma a fluctuation of first gamma?
Now we spawn points at the u,v crossing found by the fits Smd clusters should also be generated and inserted, to make embedding work...
Skip fits if they have been flagged
should examine other permutations
residuals w/in +/- 30 cm
U AND V clusters
Definition at line 112 of file StEEmcPointFitMaker.cxx.
References StEEmcPoint::cluster(), StEEmcPoint::energy(), StEEmcElement::energy(), StEEmcA2EMaker::energy(), StEEmcElement::fail(), EEmcSectorFit::GetCandidate(), EEmcSmdGeom::getIntersection(), EEmcSectorFit::GetLastCandidate(), StEEmcA2EMaker::hitstrip(), StEEmcStrip::index(), StEEmcSmdCluster::key(), kStOK, StEEmcPointMaker::mEEanalysis, StEEmcPointMaker::mEEsmd, mLimitFits, StEEmcPointMaker::mPoints, mSectorFit, EEmcSectorFit::numberOfCandidates(), StEEmcA2EMaker::numberOfHitStrips(), StEEmcPointMaker::point(), StEEmcPoint::position(), EEmcSectorFit::Residual(), StEEmcPoint::residueU(), StEEmcPoint::residueV(), StEEmcPoint::sector(), EEmcSectorFit::SetHistograms(), StEEmcPoint::sigma(), StEEmcPoint::tower(), StEEmcA2EMaker::tower(), StEEmcPoint::u(), and StEEmcPoint::v().
Referenced by Make().
| Int_t StEEmcPointFitMaker::Make | ( | ) | [virtual] |
Process event.
Create a new sector fit maker
Perform fits to SMD distributions in all 12 sectors
Do energy sharing.
Reimplemented from StEEmcPointMaker.
Definition at line 85 of file StEEmcPointFitMaker.cxx.
References EEmcSectorFit::doPermutations, FitSector(), kStOK, StEEmcPointMaker::mEnergyMode, mPermutations, mSectorFit, StEEmcPointMaker::shareEnergySimple(), and StEEmcPointMaker::shareEnergySmd().
1.5.9