X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMDParameters.h;h=c8c05127d486dfa82de704492ba24ee077a29890;hb=70bd63a20cfc69365b432f8789b133c2e312fc0c;hp=0a48809dafbf56131e80f404368bd1455068f05d;hpb=68aba90aa791d8a42ae9dfd095975f63a44915f3;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMDParameters.h b/FMD/AliFMDParameters.h index 0a48809dafb..c8c05127d48 100644 --- a/FMD/AliFMDParameters.h +++ b/FMD/AliFMDParameters.h @@ -93,10 +93,13 @@ public: /** ALTRO data map */ kAltroMap = 0x20, // Altro channel map /** Strip Range */ - kStripRange = 0x40 //Strip range - + kStripRange = 0x40 //Strip range, }; - + enum { + kAll = (kPulseGain|kPedestal|kDeadMap|kSampleRate| + kZeroSuppression|kAltroMap|kStripRange) + }; + /** Singleton access @return single to */ static AliFMDParameters* Instance(); @@ -104,16 +107,57 @@ public: /** 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)); + void 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. */ void Init(AliFMDPreprocessor* pp, - Bool_t forceReInit=kFALSE, - UInt_t what = (kPulseGain|kPedestal|kDeadMap|kSampleRate| - kZeroSuppression|kAltroMap|kStripRange)); + 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: pedsdet_number.csv + * - Gains: gainsdet_number.csv + * - Sample Rate: conditionsdet_number.csv + * - Strip Range: conditionsdet_number.csv + * + * where det_number 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. + */ + void 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. @param option Option string */ void Print(Option_t* option="A") const; @@ -166,6 +210,8 @@ public: void SetSampleRate(AliFMDCalibSampleRate* r) { fSampleRate = r; } /** @param p Pedestal value in ADC counts */ void SetPedestal(Float_t p=10) { fFixedPedestal = p; } + /** @param p Pedestal map */ + void SetPedestal(AliFMDCalibPedestal* p) { fPedestal = p; } /** @param w Pedestal width in ADC counts */ void SetPedestalWidth(Float_t w=1) { fFixedPedestalWidth = w; } /** @param t Threshold used for 1 MIP acceptance. */ @@ -179,6 +225,8 @@ public: 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; } /** @} */ /** @{ */ @@ -444,6 +492,7 @@ public: static const char* GetPedestalShuttleID() {return fkPedestalShuttleID;} static const char* GetGainShuttleID() {return fkGainShuttleID;} static const char* GetConditionsShuttleID() {return fkConditionsShuttleID;} + protected: /** CTOR */ AliFMDParameters(); @@ -484,6 +533,19 @@ protected: virtual ~AliFMDParameters() {} /** Singleton instance */ static AliFMDParameters* fgInstance; // Static singleton instance + /** + * Check if the file prefixnumber 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.