|
BrMultRdoModuleclass description - source file - inheritance tree class BrMultRdoModule : public BrModule, public BrMultUtilprotected: Data Membersprotected: 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 FunctionsDouble_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>
|