|
BrMultRdoModuleclass description - source file - inheritance tree class BrMultRdoModule : public BrModule, public BrMultUtil
protected:
Data Members
protected:
See alsoClass Descriptionvoid DefineHistograms() Define some histograms:
Dimension Contents
--------------------------------------------------
2D ADC vs Single
2D Energy vs Single
2D <Energy> vs Ring
1D Total <Energy>
2D Hits vs Ring
1D Hits
void Begin() void Finish() Job-level finalisation Normalise the dN/deta histogram to number of events and bin size void Print(Option_t* option) const Print module information See BrModule::Print for options. In addition this module defines the Option: <fill in here> void CalibrateRings(BrMultRdo* rdo) PRIVATE METHOD: Make the calibrated data for the individual detector groups i.e., the rings. This method does the outlier correction as well. There are three ways of doing that: "Close Neighbors" See the method BrMultRdoModule::CalibrateRingsCloseNeighbors() "Fraction Array" See the method BrMultRdoModule::CalibrateRingsFractionArray() "None" No correction for outliers, just sum it. As a side effect, this method also calculates the sum energy and multiplicity over the full array, but a further correction need to be applied. void CalibrateRingsCloseNeighbors(BrMultRdo* rdo) PRIVATE METHOD: Correct for outliers. The "Close Neighbors" method calculates the avarage and variance over a given ring and it's immediate neighbors. Then for each single in the ring and it's immediate neighbors it tags a single as an outlier, if it's energy signal is higher then the mean plus three variances. For those singles tag as outliers, the method substitute the energy with avarage over the the non-tagged singles in the ring and it's immediate neighbors. void CalibrateRingsFractionArray(BrMultRdo* rdo) PRIVATE METHOD: Correct for outliers. The "Fraction Array" method tags single that have a calibrated ADC signal greater then 10% of the total array calibrated ADC signal as an outlier. The outliers energy signal is substituted with the mean over the rest of the array. void CalibrateArray(BrMultRdo* rdo) PRIVATE METHOD: Make the calibrated data for the full detector. Double_t CalibrateEta() PRIVATE METHOD: Calculate the pseudo-rapidity for the current ring. Double_t CalibrateAvgEta(Double_t & ringScale) PRIVATE METHOD
Calculate average pseudorapidity accounting for depth of detectors.
The method returns the geometric scaling factor (ringScale), where
dN/deta = ringScale * (# of primary hits).
|--- width -------|
----------------- ---
| | |
| si or tile | Depth
| | |
----------------- --- ---
|
-- delta -eta |
|
-- front
|
-- |
|
------------------XX (vertex) --------------------
Assuming the azmulthal acceptance of a given detector is delta-phi,
the geometric factor to obtain dN/dEta for that detector is:
ringScale = ( 2*pi/delta-phi ) * 1/delta-eta
Double_t CalibrateAdc(Int_t adc, Bool_t& below) PRIVATE METHOD: Calibrate the ADC from DAQ. That is, do the pedestal subtraction if above threshold. Double_t CalibrateEnergy(Double_t calAdc) PRIVATE METHOD:
The energy in a given single is calculated as
sin(theta + tilt)
E = calADC * gain * ----------------- (1)
sin(theta)
The third factor in (1) is a correction for the tilt of the
detector.
Given that
sin(theta + tilt) = sin(theta)*cos(tilt) + sin(tilt)cos(theta)
and that
ringR
sin(theta) = -----------------------
sqrt(distZ^2 + ringR^2)
distZ
cos(theta) = -----------------------
sqrt(distZ^2 + ringR^2)
distZ
cotan(theta) = -----
ringR
------- ---+--- ------- -------
/|
/ | ringR
/ |
=======*===+==================
distZ
where distZ = ringZ - vtxZ, we get
sin(theta - tilt) sin(theta)*cos(tilt) - sin(tilt)cos(theta)
----------------- = ------------------------------------------
sin(theta) sin(theta)
cos(theta)
= cos(tilt) - ---------- * sin(tilt)
sin(theta)
= cos(tilt) - cotan(theta) * sin(tilt)
distZ
= cos(tilt) - ----- * sin(tilt)
ringR
so we get
distZ
E = calADC * gain * ( cos(tilt) - ----- * sin(tilt) )
ringR
We still need to correct for the vertex position, but that is
done in the Event method.
Double_t CalibrateMultiplicity(Double_t ringEta) PRIVATE METHOD: Calculate the Multiplicity from the energy deposited in a single Inline Functions
Double_t CalibrateArrayMultiplicity()
void SetAdcGapLimit(Int_t gapLimit = 0)
void SetThresholdFactor(Float_t factor = 5)
void SetSaturationChannel(Int_t channel = 1000000)
void SetOutlierMethod(BrMultRdoModule::EOutlierMethod m = kNoCorrection)
void SetSingleAdcLow(Float_t low)
void SetSingleAdcHigh(Float_t high)
void SetSingleAdcComp(Float_t comp)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
void ~BrMultRdoModule()
|
||||||
|
This page automatically generated by script docBrat by Christian Holm |
Copyright ; 2002 BRAHMS Collaboration
<brahmlib@rcf.rhic.bnl.gov>
|