#ifndef ROOT_TArrayI
# include <TArrayI.h>
#endif
-#ifndef ALIFMDUSHORTMAP_H
-# include <AliFMDUShortMap.h>
-#endif
-#ifndef ALIFMDBOOLMAP_H
-# include <AliFMDBoolMap.h>
-#endif
-typedef AliFMDUShortMap AliFMDCalibZeroSuppression;
-typedef AliFMDBoolMap AliFMDCalibDeadMap;
-class AliFMDCalibPedestal;
-class AliFMDCalibGain;
-class AliFMDCalibSampleRate;
-class AliFMDCalibStripRange;
-class AliFMDAltroMapping;
+#include "AliFMDCalibFwd.h"
class AliCDBEntry;
class AliFMDPreprocessor;
/** ALTRO data map */
kAltroMap = 0x20, // Altro channel map
/** Strip Range */
- kStripRange = 0x40 //Strip range
-
+ kStripRange = 0x40 //Strip range,
};
-
- /** Singleton access
- @return single to */
+ enum {
+ kAll = (kPulseGain|kPedestal|kDeadMap|kSampleRate|
+ kZeroSuppression|kAltroMap|kStripRange)
+ };
+
+ /**
+ * Singleton access
+ *
+ *
+ * @return singleton
+ */
static AliFMDParameters* Instance();
- /** Initialize the manager. This tries to read the parameters from
- CDB. If that fails, the class uses the hard-coded parameters.
- */
- void Init(Bool_t forceReInit=kFALSE,
- UInt_t what = (kPulseGain|kPedestal|kDeadMap|kSampleRate|
- kZeroSuppression|kAltroMap|kStripRange));
- /** Initialize the manager. This tries to read the parameters from
- CDB. If that fails, the class uses the hard-coded parameters.
- */
- void Init(AliFMDPreprocessor* pp,
- Bool_t forceReInit=kFALSE,
- UInt_t what = (kPulseGain|kPedestal|kDeadMap|kSampleRate|
- kZeroSuppression|kAltroMap|kStripRange));
- /** Print all parameters.
- @param option Option string */
+ /**
+ * Initialize the manager. This tries to read the parameters from
+ * CDB. If that fails, the class uses the hard-coded parameters.
+ *
+ * @param forceReInit Force (re-)initalize flag
+ * @param what What to initialize
+ *
+ * @return 0 on success, bit mask of failed elements otherwise
+ */
+ UShort_t Init(Bool_t forceReInit=kFALSE, UInt_t what=kAll );
+ /**
+ * Initialize the manager. This tries to read the parameters from
+ * CDB. If that fails, the class uses the hard-coded parameters.
+ *
+ * @param pp Preprocessor
+ * @param forceReInit Force (re-)initalize flag
+ * @param what What to initialize
+ *
+ * @return 0 on success, bit mask of failed elements otherwise
+ */
+ UShort_t Init(AliFMDPreprocessor* pp,
+ Bool_t forceReInit=kFALSE,
+ UInt_t what=kAll);
+ /**
+ * Initialize the manager. This will try to read some calibrations
+ * (sample rate, strip range, gains, pedestals) from local comma
+ * separated value (CSV) files in the directory pointed at by @a
+ * path. If they are not found, then they will be retrieved from
+ * OCDB as appropriately. Other calibrations are always read from
+ * OCDB.
+ *
+ * The CSV files should be named as
+ *
+ * - Pedestals: <tt>peds</tt><i>det_number</i><tt>.csv</tt>
+ * - Gains: <tt>gains</tt><i>det_number</i><tt>.csv</tt>
+ * - Sample Rate: <tt>conditions</tt><i>det_number</i><tt>.csv</tt>
+ * - Strip Range: <tt>conditions</tt><i>det_number</i><tt>.csv</tt>
+ *
+ * where <i>det_number</i> is the detector number (1, 2, or 3).
+ *
+ * @param path Where to look for the CSV files
+ * @param forceReInit Always reinitialise
+ * @param what What calibrations to load.
+ *
+ * @return 0 on success, bit mask of failed elements otherwise
+ */
+ UShort_t Init(const char* path,
+ Bool_t forceReInit=kFALSE,
+ UInt_t what=kAll);
+
+ /**
+ * Automatically generate a dead map from the pedestals and gains.
+ * A channel is marked as dead of the noise is too high (currently
+ * more than 10 ADC counts), or the gain is unreasonable (currently
+ * larger than 10, or smaller than 0.1).
+ *
+ * The procedure does not overwrite channels previously marked as
+ * dead - e.g., channels marked as dead in the calibration loaded
+ * from OCDB will continue to be marked as dead. That is, this
+ * procedure will never make a channel un-dead.
+ *
+ * @param maxNoise Maximum noise value before a channel is marked
+ * as dead.
+ * @param minGain Minimum value of the calibrated gain before a
+ * channel is considered dead.
+ * @param maxGain Maximum value of the calibrated gain before a
+ * channel is considered dead.
+ */
+ void MakeDeadMap(Float_t maxNoise=10, Float_t minGain=.1, Float_t maxGain=10);
+ /**
+ * Print all parameters.
+ *
+ * If option contains an 'A' then everything is printed.
+ *
+ * If the option contains the string "FMD" the function will search
+ * for detector, ring, sector, and strip numbers to print, in
+ * format
+ *
+ * @verbatim
+ * FMD<detector><ring>[<sector>,<string>]
+ * @endverbatim
+ *
+ * The wild card '*' means all of <detector>, <ring>, <sector>, or
+ * <strip>.
+ *
+ * @param option Option string
+ */
void Print(Option_t* option="A") const;
- /** Draw parameters.
- @param option What to draw. Should be one of
- - dead Dead channels
- - threshold Threshold
- - gain Gain
- - pedestal Pedestal
- - noise Noise (or pedestal width)
- - zero Zero suppression
- - rate Sampling rate (VA1 clock / ALTRO clock)
- - min Minimum strip read out
- - max Maximum strip read out
- - map hardware address
- */
+ /**
+ * Draw parameters.
+ *
+ * @param option What to draw. Should be one of
+ * - dead Dead channels
+ * - threshold Threshold
+ * - gain Gain
+ * - pedestal Pedestal
+ * - noise Noise (or pedestal width)
+ * - zero Zero suppression
+ * - rate Sampling rate (VA1 clock / ALTRO clock)
+ * - min Minimum strip read out
+ * - max Maximum strip read out
+ * - map hardware address
+ */
void Draw(Option_t* option="pedestal");
/** @{ */
/** @name Set various `Fixed' parameters */
- /** @param r How many MIP signals we can fit in the VA1
- pre-amps. (default and design is 20) */
+ /**
+ * @param r How many MIP signals we can fit in the VA1
+ * pre-amps. (default and design is 20)
+ */
void SetVA1MipRange(UShort_t r=20) { fVA1MipRange = r; }
- /** @param s Maximum number of the ADC (ALTRO). This is a 10 bit
- ADC so, the maximum number is 1024 */
+ /**
+ * @param s Maximum number of the ADC (ALTRO). This is a 10 bit
+ * ADC so, the maximum number is 1024
+ */
void SetAltroChannelSize(UShort_t s=1024) { fAltroChannelSize = s;}
- /** @param size The number of strips multiplexed into one ALTRO
- channel. That is, how many strips is connected to one VA1
- pre-amp. */
+ /**
+ * @param size The number of strips multiplexed into one ALTRO
+ * channel. That is, how many strips is connected to one VA1
+ * pre-amp.
+ */
void SetChannelsPerAltro(UShort_t size=128) { fChannelsPerAltro = size; }
- /** @param f Factor to use for accepting a signal. */
+ /**
+ * @param f Factor to use for accepting a signal.
+ */
void SetPedestalFactor(Float_t f=3) { fPedestalFactor = f; }
- /** @param n Number of pre-samples to keep during zero-suppression -
- only used in simulation. */
+ /**
+ * @param n Number of pre-samples to keep during zero-suppression -
+ * only used in simulation.
+ */
void SetZSPreSamples(UShort_t n=1) { fZSPre = (n & 0x3); }
- /** @param n Number of post-samples to keep during zero-suppression -
- only used in simulation. */
+ /**
+ * @param n Number of post-samples to keep during zero-suppression -
+ * only used in simulation.
+ */
void SetZSPostSamples(UShort_t n=1) { fZSPost = (n & 0x3); }
- /** @param use If true, do pedestal subtraction before zero
- suppression - only used in simulation */
+ /**
+ * @param use If true, do pedestal subtraction before zero
+ * suppression - only used in simulation
+ */
void SetZSPedSubtract(Bool_t use=kTRUE) { fZSPedSubtract = use; }
/** @} */
/** @{ */
/** @name Set various variable parameter defaults */
- /** @param s Zero suppression threshold in ADC counts */
- void SetZeroSuppression(UShort_t s=0) { fFixedZeroSuppression = s; }
- /** @param r How many times we oversample each strip. */
- void SetSampleRate(UShort_t r=1) { fFixedSampleRate = r ;}//(r>2?2:r);}
+ /**
+ * @param s Zero suppression threshold in ADC counts
+ */
+ void SetZeroSuppression(UShort_t s=1) { fFixedZeroSuppression = s; }
+ /**
+ * @param r How many times we oversample each strip.
+ */
+ void SetSampleRate(UShort_t r=2) { fFixedSampleRate = r ;}//(r>2?2:r);}
+ /**
+ * @param r How many times we oversample each strip.
+ */
void SetSampleRate(AliFMDCalibSampleRate* r) { fSampleRate = r; }
- /** @param p Pedestal value in ADC counts */
- void SetPedestal(Float_t p=10) { fFixedPedestal = p; }
- /** @param w Pedestal width in ADC counts */
- void SetPedestalWidth(Float_t w=1) { fFixedPedestalWidth = w; }
- /** @param t Threshold used for 1 MIP acceptance. */
+ /**
+ * @param p Pedestal value in ADC counts
+ */
+ void SetPedestal(Float_t p=100) { fFixedPedestal = p; }
+ /**
+ * @param p Pedestal map
+ */
+ void SetPedestal(AliFMDCalibPedestal* p) { fPedestal = p; }
+ /**
+ * @param w Pedestal width in ADC counts
+ */
+ void SetPedestalWidth(Float_t w=2) { fFixedPedestalWidth = w; }
+ /**
+ * @param t Threshold used for 1 MIP acceptance.
+ */
void SetThreshold(Float_t t=0) { fFixedThreshold = t; }
- /** Range of strips read out
- @param min Minimum strip number (0-127).
- @param max Maximum strip number (0-127). */
+ /**
+ * Range of strips read out
+ *
+ * @param min Minimum strip number (0-127).
+ * @param max Maximum strip number (0-127).
+ */
void SetStripRange(UShort_t min=0, UShort_t max=127);
+ /**
+ * set the strip range from object
+ *
+ * @param r Strip range object
+ */
void SetStripRange(AliFMDCalibStripRange* r) { fStripRange = r; }
- /** Whether raw data has full common data header (8 32bit words) or
- the older invalid format (7 32bit words with bogus entries)
- @param yes if true the raw data has complete data header */
+ /**
+ * Whether raw data has full common data header (8 32bit words) or
+ * the older invalid format (7 32bit words with bogus entries)
+ *
+ * @param yes if true the raw data has complete data header
+ */
void UseCompleteHeader(Bool_t yes=kTRUE) { fHasCompleteHeader = yes; }
+ /**
+ * @param g Gain map
+ */
+ void SetGain(AliFMDCalibGain* g) { fPulseGain = g; }
+ /**
+ * @param g Gain map
+ */
+ void SetGain(Float_t g=2) { fFixedPulseGain = g; }
/** @} */
/** @{ */
/** @name Get `Fixed' various parameters */
- /** @return Number of MIP signals that fit inside a VA1 channel */
+ /**
+ * @return Number of MIP signals that fit inside a VA1 channel
+ */
UShort_t GetVA1MipRange() const { return fVA1MipRange; }
- /** @return The maximum count in the ADC */
+ /**
+ * @return The maximum count in the ADC
+ */
UShort_t GetAltroChannelSize() const { return fAltroChannelSize; }
- /** @return Number of strips muliplexed into one ADC channel */
+ /**
+ * @return Number of strips muliplexed into one ADC channel
+ */
UShort_t GetChannelsPerAltro() const { return fChannelsPerAltro; }
- /** @return The average energy deposited by one MIP */
+ /**
+ * @return The average energy deposited by one MIP
+ */
Float_t GetEdepMip() const;
- /** @return The conversion factor from DAC to ADC */
+ /**
+ * This is the conversion from Digital-to-Analog-Converter setting
+ * to the number of MIPs. The number was measured in the NBI lab during
+ * August 2008.
+ *
+ * @return The conversion factor from DAC to ADC
+ */
Float_t GetDACPerMIP() const;
- /** @return The factor used of signal acceptance */
+ /**
+ * @return The factor used of signal acceptance
+ */
Float_t GetPedestalFactor() const { return fPedestalFactor; }
- /** @param n Number of pre-samples to keep during zero-suppression -
- only used in simulation. */
+ /**
+ * @param n Number of pre-samples to keep during zero-suppression -
+ * only used in simulation.
+ */
UShort_t GetZSPreSamples() const { return fZSPre; }
- /** @param n Number of post-samples to keep during zero-suppression -
- only used in simulation. */
+ /**
+ * @param n Number of post-samples to keep during zero-suppression -
+ * only used in simulation.
+ */
UShort_t GetZSPostSamples() const { return fZSPost; }
- /** @param use If true, do pedestal subtraction before zero
- suppression - only used in simulation */
+ /**
+ * @param use If true, do pedestal subtraction before zero
+ * suppression - only used in simulation
+ */
Bool_t IsZSPedSubtract() const { return fZSPedSubtract; }
/** @} */
-
+
/** @{ */
/** @name Various varible conditions */
- /** Whether the strip is considered dead
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return @c true if the strip is considered dead, @c false if
- it's OK. */
+ /**
+ * Whether the strip is considered dead
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return @c true if the strip is considered dead, @c false if it's
+ * OK.
+ */
Bool_t IsDead(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
+ /**
+ * Get the threshold in the pulser gain
+ *
+ *
+ * @return Threshold from pulser
+ */
Float_t GetThreshold() const;
- /** Gain of pre-amp.
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Gain of pre-amp. */
+ /**
+ * Gain of pre-amp. for strip, sector, ring, detector
+ *
+ * For simulations this is normally set to
+ *
+ * @f[
+ * \frac{\mbox{VA1_MIP_Range}{\mbox{ALTRO_channel_size}}\mbox{MIP_Energy_Loss}
+ * @f]
+ *
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Gain of pre-amp.
+ */
Float_t GetPulseGain(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Get mean of pedestal
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Mean of pedestal */
+ /**
+ * Get mean of pedestal
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Mean of pedestal
+ */
Float_t GetPedestal(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Width of pedestal
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Width of pedestal */
+ /**
+ * Width of pedestal
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Width of pedestal
+ */
Float_t GetPedestalWidth(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** zero suppression threshold (in ADC counts)
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return zero suppression threshold (in ADC counts) */
+ /**
+ * zero suppression threshold (in ADC counts)
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return zero suppression threshold (in ADC counts)
+ */
UShort_t GetZeroSuppression(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Get the sampling rate
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return The sampling rate */
+ /**
+ * Get the sampling rate
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return The sampling rate
+ */
UShort_t GetSampleRate(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Get the minimum strip in the read-out range
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Minimum strip */
+ /**
+ * Get the minimum strip in the read-out range
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Minimum strip
+ */
UShort_t GetMinStrip(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Get the maximum strip in the read-out range
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Maximum strip */
+ /**
+ * Get the maximum strip in the read-out range
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Maximum strip
+ */
UShort_t GetMaxStrip(UShort_t detector,
Char_t ring,
UShort_t sector,
UShort_t strip) const;
- /** Get the number of pre-samples in ALTRO channels
- @param detector Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sector Sector number (0-39)
- @param strip Strip number (0-511)
- @return Maximum strip */
+ /**
+ * Get the number of pre-samples in ALTRO channels
+ *
+ * @param detector Detector # (1-3)
+ * @param ring Ring ID ('I' or 'O')
+ * @param sector Sector number (0-39)
+ * @param strip Strip number (0-511)
+ *
+ * @return Maximum strip
+ */
UShort_t GetPreSamples(UShort_t,
Char_t,
UShort_t,
UShort_t) const { return 14+5; }
- /** @} */
+ /* @}*/
- /** @{
- @name Hardware to detector translation (and inverse) */
- /** Map a hardware address into a detector index.
- @param ddl Hardware DDL number
- @param board FEC number
- @param altro ALTRO number
- @param channel Channel number
- @param timebin Timebin
- @param det On return, the detector #
- @param ring On return, the ring ID
- @param sec On return, the sector #
- @param str On return, the base of strip #
- @param sam On return, the sample number for this strip
- @return @c true on success, false otherwise */
+ /**
+ * @{
+ * @name Hardware to detector translation (and inverse)
+ */
+ /**
+ * Map a hardware address into a detector index.
+ *
+ * @param ddl Hardware DDL number
+ * @param board FEC number
+ * @param altro ALTRO number
+ * @param channel Channel number
+ * @param timebin Timebin
+ * @param det On return, the detector #
+ * @param ring On return, the ring ID
+ * @param sec On return, the sector #
+ * @param str On return, the base of strip #
+ * @param sam On return, the sample number for this strip
+ *
+ * @return @c true on success, false otherwise
+ */
Bool_t Hardware2Detector(UShort_t ddl, UShort_t board,
UShort_t altro, UShort_t chan,
UShort_t timebin,
UShort_t& det, Char_t& ring,
UShort_t& sec, Short_t& str,
UShort_t& sam) const;
- /** Map a hardware address into a detector index.
- @param ddl Hardware DDL number
- @param hwaddr Hardware address.
- @param timebin Timebin
- @param det On return, the detector #
- @param ring On return, the ring ID
- @param sec On return, the sector #
- @param str On return, the base of strip #
- @param sam On return, the sample number for this strip
- @return @c true on success, false otherwise */
+ /**
+ * Map a hardware address into a detector index.
+ *
+ * @param ddl Hardware DDL number
+ * @param hwaddr Hardware address.
+ * @param timebin Timebin
+ * @param det On return, the detector #
+ * @param ring On return, the ring ID
+ * @param sec On return, the sector #
+ * @param str On return, the base of strip #
+ * @param sam On return, the sample number for this strip
+ *
+ * @return @c true on success, false otherwise
+ */
Bool_t Hardware2Detector(UShort_t ddl, UShort_t hwaddr,
UShort_t timebin,
UShort_t& det, Char_t& ring,
UShort_t& sec, Short_t& str,
UShort_t& sam) const;
-#if 0
- /** Translate hardware address to detector coordinates
- @param ddl DDL number
- @param board Board address
- @param chip Chip #
- @param channel Channel #
- @param det On return, Detector # (1-3)
- @param ring On return, Ring ID ('I' or 'O')
- @param sec On return, Sector number (0-39)
- @param str On return, Strip number (0-511)
- @return @c true on success. */
- Bool_t Hardware2Detector(UShort_t ddl, UShort_t board,
- UShort_t chip, UShort_t channel,
- UShort_t& det, Char_t& ring,
- UShort_t& sec, Short_t& str) const;
- /** Translate hardware address to detector coordinates
- @param ddl DDL number
- @param addr Hardware address
- @param det On return, Detector # (1-3)
- @param ring On return, Ring ID ('I' or 'O')
- @param sec On return, Sector number (0-39)
- @param str On return, Strip number (0-511)
- @return @c true on success. */
- Bool_t Hardware2Detector(UShort_t ddl, UShort_t addr, UShort_t& det,
- Char_t& ring, UShort_t& sec, Short_t& str) const;
-#endif
- /** Map a detector index into a hardware address.
- @param det The detector #
- @param ring The ring ID
- @param sec The sector #
- @param str The strip #
- @param sam The sample number
- @param ddl On return, hardware DDL number
- @param board On return, the FEC board address (local to DDL)
- @param altro On return, the ALTRO number (local to FEC)
- @param channel On return, the channel number (local to ALTRO)
- @param timebin On return, the timebin number (local to ALTRO)
- @return @c true on success, false otherwise */
+ /**
+ * Map a detector index into a hardware address.
+ *
+ * @param det The detector #
+ * @param ring The ring ID
+ * @param sec The sector #
+ * @param str The strip #
+ * @param sam The sample number
+ * @param ddl On return, hardware DDL number
+ * @param board On return, the FEC board address (local to DDL)
+ * @param altro On return, the ALTRO number (local to FEC)
+ * @param channel On return, the channel number (local to ALTRO)
+ * @param timebin On return, the timebin number (local to ALTRO)
+ *
+ * @return @c true on success, false otherwise
+ */
Bool_t Detector2Hardware(UShort_t det, Char_t ring,
UShort_t sec, UShort_t str,
UShort_t sam,
UShort_t& ddl, UShort_t& board,
UShort_t& altro, UShort_t& channel,
UShort_t& timebin) const;
- /** Map a detector index into a hardware address.
- @param det The detector #
- @param ring The ring ID
- @param sec The sector #
- @param str The strip #
- @param sam The sample number
- @param ddl On return, hardware DDL number
- @param hwaddr On return, hardware address.
- @param timebin On return, the timebin number (local to ALTRO)
- @return @c true on success, false otherwise */
+ /**
+ * Map a detector index into a hardware address.
+ *
+ * @param det The detector #
+ * @param ring The ring ID
+ * @param sec The sector #
+ * @param str The strip #
+ * @param sam The sample number
+ * @param ddl On return, hardware DDL number
+ * @param hwaddr On return, hardware address.
+ * @param timebin On return, the timebin number (local to ALTRO)
+ *
+ * @return @c true on success, false otherwise
+ */
Bool_t Detector2Hardware(UShort_t det, Char_t ring,
UShort_t sec, UShort_t str,
UShort_t sam,
UShort_t& ddl, UShort_t& hwaddr,
UShort_t& timebin) const;
-#if 0
- /** Translate detector coordinates to hardware address
- @param det Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sec Sector number (0-39)
- @param str Strip number (0-511)
- @param ddl On return, DDL number
- @param board On return, Board address
- @param chip On return, Chip #
- @param channel On return, Channel #
- @return @c true on success. */
- Bool_t Detector2Hardware(UShort_t det, Char_t ring,
- UShort_t sec, UShort_t str,
- UShort_t& ddl, UShort_t& board,
- UShort_t& chip, UShort_t& channel) const;
- /** Translate detector coordinates to hardware address
- @param det Detector # (1-3)
- @param ring Ring ID ('I' or 'O')
- @param sec Sector number (0-39)
- @param str Strip number (0-511)
- @param ddl On return, DDL number
- @param addr On return, Hardware address
- @return @c true on success. */
- Bool_t Detector2Hardware(UShort_t det, Char_t ring, UShort_t sec,
- UShort_t str, UShort_t& ddl, UShort_t& addr) const;
-#endif
- /** Get the map that translates hardware to detector coordinates
- @return Get the map that translates hardware to detector
- coordinates */
+ /**
+ * Get the map that translates hardware to detector coordinates
+ *
+ * @return Get the map that translates hardware to detector
+ * coordinates
+ */
AliFMDAltroMapping* GetAltroMap() const;
- /** Whether raw data has full common data header (8 32bit words) or
- the older invalid format (7 32bit words with bogus entries)
- @return false if the raw data has incomplete data header */
+ /**
+ * Whether raw data has full common data header (8 32bit words) or
+ * the older invalid format (7 32bit words with bogus entries)
+ *
+ * @return false if the raw data has incomplete data header
+ */
Bool_t HasCompleteHeader() const { return fHasCompleteHeader; }
/** @} */
static const char* GetPedestalShuttleID() {return fkPedestalShuttleID;}
static const char* GetGainShuttleID() {return fkGainShuttleID;}
static const char* GetConditionsShuttleID() {return fkConditionsShuttleID;}
+
protected:
- /** CTOR */
+ /**
+ * CTOR
+ */
AliFMDParameters();
- /** CTOR */
+ /**
+ * CTOR
+ */
AliFMDParameters(const AliFMDParameters& o)
: TNamed(o),
fIsInit(o.fIsInit),
fPulseGain(o.fPulseGain),
fDeadMap(o.fDeadMap),
fAltroMap(o.fAltroMap),
- fStripRange(o.fStripRange)
+ fStripRange(o.fStripRange),
+ fRunNo(o.fRunNo)
{}
- /** Assignement operator
- @return Reference to this */
+ /**
+ * Assignement operator
+ *
+ * @return Reference to this
+ */
AliFMDParameters& operator=(const AliFMDParameters&) { return *this; }
- /** DTOR */
+ /**
+ * DTOR
+ */
virtual ~AliFMDParameters() {}
- /** Singleton instance */
+ /**
+ * Singleton instance
+ */
static AliFMDParameters* fgInstance; // Static singleton instance
- /** Get an entry from either global AliCDBManager or passed
- AliFMDPreprocessor.
- @param path Path to CDB object.
- @param pp AliFMDPreprocessor
- @param fatal If true, raise a fatal flag if we didn't get the entry.
- @return AliCDBEntry if found */
+ /**
+ * Check if the file <i>prefix</i><i>number</i> exists in @a path,
+ * and write the full path to @a f.
+ *
+ * @param prefix File prefix (cond, peds, gains, ...)
+ * @param path Path to files
+ * @param number Detector number (1, 2, or 3)
+ * @param f On return full path to file (if found)
+ *
+ * @return @c true if file exists and is readable, @c false otherwise
+ */
+ Bool_t CheckFile(const char* prefix, const char* path,
+ int number, TString& f) const;
+ /**
+ * Get an entry from either global AliCDBManager or passed
+ * AliFMDPreprocessor.
+ *
+ * @param path Path to CDB object.
+ * @param pp AliFMDPreprocessor
+ * @param fatal If true, raise a fatal flag if we didn't get the entry.
+ * @return AliCDBEntry if found
+ */
AliCDBEntry* GetEntry(const char* path, AliFMDPreprocessor* pp,
Bool_t fatal=kTRUE) const;
- /** Initialize gains. Try to get them from CDB */
- void InitPulseGain(AliFMDPreprocessor* pp=0);
- /** Initialize pedestals. Try to get them from CDB */
- void InitPedestal(AliFMDPreprocessor* pp=0);
- /** Initialize dead map. Try to get it from CDB */
- void InitDeadMap(AliFMDPreprocessor* pp=0);
- /** Initialize sample rates. Try to get them from CDB */
- void InitSampleRate(AliFMDPreprocessor* pp=0);
- /** Initialize zero suppression thresholds. Try to get them from CDB */
- void InitZeroSuppression(AliFMDPreprocessor* pp=0);
- /** Initialize hardware map. Try to get it from CDB */
- void InitAltroMap(AliFMDPreprocessor* pp=0);
- /** Initialize strip range. Try to get it from CDB */
- void InitStripRange(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize gains. Try to get them from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitPulseGain(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize pedestals. Try to get them from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitPedestal(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize dead map. Try to get it from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitDeadMap(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize sample rates. Try to get them from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitSampleRate(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize zero suppression thresholds. Try to get them from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitZeroSuppression(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize hardware map. Try to get it from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitAltroMap(AliFMDPreprocessor* pp=0);
+ /**
+ * Initialize strip range. Try to get it from CDB
+ *
+ * @param pp Pre-processor if called from shuttle
+ *
+ * @return 0 on success, error mask otherwise
+ */
+ UShort_t InitStripRange(AliFMDPreprocessor* pp=0);
+ Bool_t CheckForNewRun();
Bool_t fIsInit; // Whether we've been initialised
AliFMDCalibDeadMap* fDeadMap; // Pulser gain
AliFMDAltroMapping* fAltroMap; // Map of hardware
AliFMDCalibStripRange* fStripRange; // Strip range
+ Int_t fRunNo; // Initialized for this run
- ClassDef(AliFMDParameters,6) // Manager of parameters
+ ClassDef(AliFMDParameters,7) // Manager of parameters
};
+//__________________________________________________________________
+inline void
+AliFMDParameters::SetStripRange(UShort_t min, UShort_t max)
+{
+ // Set fixed strip range
+ fFixedMinStrip = min;
+ fFixedMaxStrip = max;
+}
+
#endif
//____________________________________________________________________
//