Added the offline trigger functions for use with the first physics.
[u/mrichter/AliRoot.git] / FMD / AliFMDParameters.h
CommitLineData
1a1fdef7 1#ifndef ALIFMDPARAMETERS_H
2#define ALIFMDPARAMETERS_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4 * reserved.
5 *
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7 *
8 * See cxx source for full Copyright notice
9 */
1a1fdef7 10//____________________________________________________________________
11//
12// Singleton class to handle various parameters (not geometry) of the
13// FMD
088f8e79 14// Should get ata fromm Conditions DB.
1a1fdef7 15//
02a27b50 16/** @file AliFMDParameters.h
17 @author Christian Holm Christensen <cholm@nbi.dk>
18 @date Mon Mar 27 12:44:43 2006
19 @brief Manager of FMD parameters
20*/
1a1fdef7 21#ifndef ROOT_TNamed
22# include <TNamed.h>
23#endif
8f6ee336 24#ifndef ROOT_TArrayI
25# include <TArrayI.h>
26#endif
27#ifndef ALIFMDUSHORTMAP_H
28# include <AliFMDUShortMap.h>
29#endif
30#ifndef ALIFMDBOOLMAP_H
31# include <AliFMDBoolMap.h>
32#endif
33typedef AliFMDUShortMap AliFMDCalibZeroSuppression;
34typedef AliFMDBoolMap AliFMDCalibDeadMap;
35class AliFMDCalibPedestal;
36class AliFMDCalibGain;
37class AliFMDCalibSampleRate;
c2fc1258 38class AliFMDCalibStripRange;
57c3c593 39class AliFMDAltroMapping;
dc02d468 40class AliCDBEntry;
41class AliFMDPreprocessor;
42
02a27b50 43//____________________________________________________________________
44//
45// Singleton class to handle various parameters (not geometry) of the
46// FMD
47// Should get ata fromm Conditions DB.
48//
1a1fdef7 49
c2fc1258 50/** @brief This class is a singleton that handles various parameters
51 of the FMD detectors.
52 This class reads from the Conditions DB to get the various
53 parameters, which code can then request from here. In that way,
54 all code uses the same data, and the interface is consistent.
9f662337 55
56 Some of the parameter managed are
57 - @c fPedestal, @c fPedestalWidth
58 Mean and width of the pedestal. The pedestal is simulated
59 by a Guassian, but derived classes my override MakePedestal
60 to simulate it differently (or pick it up from a database).
61 - @c fVA1MipRange
62 The dymamic MIP range of the VA1_ALICE pre-amplifier chip
63 - @c fAltroChannelSize
64 The largest number plus one that can be stored in one
65 channel in one time step in the ALTRO ADC chip.
66 - @c fSampleRate
67 How many times the ALTRO ADC chip samples the VA1_ALICE
68 pre-amplifier signal. The VA1_ALICE chip is read-out at
69 10MHz, while it's possible to drive the ALTRO chip at
70 25MHz. That means, that the ALTRO chip can have time to
71 sample each VA1_ALICE signal up to 2 times. Although it's
72 not certain this feature will be used in the production,
73 we'd like have the option, and so it should be reflected in
74 the code.
75
76 @ingroup FMD_base
77*/
1a1fdef7 78class AliFMDParameters : public TNamed
79{
80public:
f6449cc0 81 /** Enumeration of things to initialize */
82 enum What {
83 /** Pulser gain */
84 kPulseGain = 0x1, // Pulser gain
85 /** Pedestals and noise */
86 kPedestal = 0x2, // Pedestal and noise
87 /** Dead channel map */
88 kDeadMap = 0x4, // Dead channel map
89 /** Over sampling rate */
90 kSampleRate = 0x8, // Over sampling rate
91 /** Zero suppression parameters */
92 kZeroSuppression = 0x10, // Zero suppression parameters
93 /** ALTRO data map */
6bf06d81 94 kAltroMap = 0x20, // Altro channel map
95 /** Strip Range */
f560b28c 96 kStripRange = 0x40 //Strip range,
f6449cc0 97 };
f560b28c 98 enum {
99 kAll = (kPulseGain|kPedestal|kDeadMap|kSampleRate|
100 kZeroSuppression|kAltroMap|kStripRange)
101 };
102
9f662337 103 /** Singleton access
104 @return single to */
1a1fdef7 105 static AliFMDParameters* Instance();
57c3c593 106
9f662337 107 /** Initialize the manager. This tries to read the parameters from
108 CDB. If that fails, the class uses the hard-coded parameters.
109 */
f560b28c 110 void Init(Bool_t forceReInit=kFALSE, UInt_t what=kAll );
dc02d468 111 /** Initialize the manager. This tries to read the parameters from
112 CDB. If that fails, the class uses the hard-coded parameters.
113 */
114 void Init(AliFMDPreprocessor* pp,
f560b28c 115 Bool_t forceReInit=kFALSE,
116 UInt_t what=kAll);
117 /**
118 * Initialize the manager. This will try to read some calibrations
119 * (sample rate, strip range, gains, pedestals) from local comma
120 * separated value (CSV) files in the directory pointed at by @a
121 * path. If they are not found, then they will be retrieved from
122 * OCDB as appropriately. Other calibrations are always read from
123 * OCDB.
124 *
125 * The CSV files should be named as
126 *
127 * - Pedestals: <tt>peds</tt><i>det_number</i><tt>.csv</tt>
128 * - Gains: <tt>gains</tt><i>det_number</i><tt>.csv</tt>
129 * - Sample Rate: <tt>conditions</tt><i>det_number</i><tt>.csv</tt>
130 * - Strip Range: <tt>conditions</tt><i>det_number</i><tt>.csv</tt>
131 *
132 * where <i>det_number</i> is the detector number (1, 2, or 3).
133 *
134 * @param path Where to look for the CSV files
135 * @param forceReInit Always reinitialise
136 * @param what What calibrations to load.
137 */
138 void Init(const char* path,
139 Bool_t forceReInit=kFALSE,
140 UInt_t what=kAll);
141
142 /**
143 * Automatically generate a dead map from the pedestals and gains.
144 * A channel is marked as dead of the noise is too high (currently
145 * more than 10 ADC counts), or the gain is unreasonable (currently
146 * larger than 10, or smaller than 0.1).
147 *
148 * The procedure does not overwrite channels previously marked as
149 * dead - e.g., channels marked as dead in the calibration loaded
150 * from OCDB will continue to be marked as dead. That is, this
151 * procedure will never make a channel un-dead.
152 *
153 * @param maxNoise Maximum noise value before a channel is marked
154 * as dead.
155 * @param minGain Minimum value of the calibrated gain before a
156 * channel is considered dead.
157 * @param maxGain Maximum value of the calibrated gain before a
158 * channel is considered dead.
159 */
160 void MakeDeadMap(Float_t maxNoise=10, Float_t minGain=.1, Float_t maxGain=10);
c2fc1258 161 /** Print all parameters.
162 @param option Option string */
163 void Print(Option_t* option="A") const;
6169f936 164 /** Draw parameters.
165 @param option What to draw. Should be one of
166 - dead Dead channels
167 - threshold Threshold
168 - gain Gain
169 - pedestal Pedestal
170 - noise Noise (or pedestal width)
171 - zero Zero suppression
172 - rate Sampling rate (VA1 clock / ALTRO clock)
173 - min Minimum strip read out
174 - max Maximum strip read out
175 - map hardware address
176 */
177 void Draw(Option_t* option="pedestal");
1a1fdef7 178
9f662337 179 /** @{ */
180 /** @name Set various `Fixed' parameters */
c2fc1258 181 /** @param r How many MIP signals we can fit in the VA1
182 pre-amps. (default and design is 20) */
8f6ee336 183 void SetVA1MipRange(UShort_t r=20) { fVA1MipRange = r; }
c2fc1258 184 /** @param s Maximum number of the ADC (ALTRO). This is a 10 bit
185 ADC so, the maximum number is 1024 */
8f6ee336 186 void SetAltroChannelSize(UShort_t s=1024) { fAltroChannelSize = s;}
c2fc1258 187 /** @param size The number of strips multiplexed into one ALTRO
188 channel. That is, how many strips is connected to one VA1
189 pre-amp. */
8f6ee336 190 void SetChannelsPerAltro(UShort_t size=128) { fChannelsPerAltro = size; }
c2fc1258 191 /** @param f Factor to use for accepting a signal. */
8f6ee336 192 void SetPedestalFactor(Float_t f=3) { fPedestalFactor = f; }
cce354f6 193 /** @param n Number of pre-samples to keep during zero-suppression -
194 only used in simulation. */
195 void SetZSPreSamples(UShort_t n=1) { fZSPre = (n & 0x3); }
196 /** @param n Number of post-samples to keep during zero-suppression -
197 only used in simulation. */
198 void SetZSPostSamples(UShort_t n=1) { fZSPost = (n & 0x3); }
199 /** @param use If true, do pedestal subtraction before zero
200 suppression - only used in simulation */
201 void SetZSPedSubtract(Bool_t use=kTRUE) { fZSPedSubtract = use; }
9f662337 202 /** @} */
8f6ee336 203
9f662337 204 /** @{ */
205 /** @name Set various variable parameter defaults */
c2fc1258 206 /** @param s Zero suppression threshold in ADC counts */
8f6ee336 207 void SetZeroSuppression(UShort_t s=0) { fFixedZeroSuppression = s; }
c2fc1258 208 /** @param r How many times we oversample each strip. */
f743c846 209 void SetSampleRate(UShort_t r=1) { fFixedSampleRate = r ;}//(r>2?2:r);}
6acbd49f 210 void SetSampleRate(AliFMDCalibSampleRate* r) { fSampleRate = r; }
c2fc1258 211 /** @param p Pedestal value in ADC counts */
8f6ee336 212 void SetPedestal(Float_t p=10) { fFixedPedestal = p; }
e064ab4a 213 /** @param p Pedestal map */
214 void SetPedestal(AliFMDCalibPedestal* p) { fPedestal = p; }
c2fc1258 215 /** @param w Pedestal width in ADC counts */
8f6ee336 216 void SetPedestalWidth(Float_t w=1) { fFixedPedestalWidth = w; }
c2fc1258 217 /** @param t Threshold used for 1 MIP acceptance. */
8f6ee336 218 void SetThreshold(Float_t t=0) { fFixedThreshold = t; }
c2fc1258 219 /** Range of strips read out
220 @param min Minimum strip number (0-127).
221 @param max Maximum strip number (0-127). */
222 void SetStripRange(UShort_t min=0, UShort_t max=127);
433a88bd 223 void SetStripRange(AliFMDCalibStripRange* r) { fStripRange = r; }
625d7886 224 /** Whether raw data has full common data header (8 32bit words) or
225 the older invalid format (7 32bit words with bogus entries)
226 @param yes if true the raw data has complete data header */
227 void UseCompleteHeader(Bool_t yes=kTRUE) { fHasCompleteHeader = yes; }
e064ab4a 228 /** @param g Gain map */
229 void SetGain(AliFMDCalibGain* g) { fPulseGain = g; }
9f662337 230 /** @} */
1a1fdef7 231
9f662337 232 /** @{ */
233 /** @name Get `Fixed' various parameters */
c2fc1258 234 /** @return Number of MIP signals that fit inside a VA1 channel */
1a1fdef7 235 UShort_t GetVA1MipRange() const { return fVA1MipRange; }
c2fc1258 236 /** @return The maximum count in the ADC */
1a1fdef7 237 UShort_t GetAltroChannelSize() const { return fAltroChannelSize; }
c2fc1258 238 /** @return Number of strips muliplexed into one ADC channel */
1a1fdef7 239 UShort_t GetChannelsPerAltro() const { return fChannelsPerAltro; }
c2fc1258 240 /** @return The average energy deposited by one MIP */
1a1fdef7 241 Float_t GetEdepMip() const;
68aba90a 242 /** @return The conversion factor from DAC to ADC */
243 Float_t GetDACPerMIP() const;
c2fc1258 244 /** @return The factor used of signal acceptance */
1a1fdef7 245 Float_t GetPedestalFactor() const { return fPedestalFactor; }
cce354f6 246 /** @param n Number of pre-samples to keep during zero-suppression -
247 only used in simulation. */
248 UShort_t GetZSPreSamples() const { return fZSPre; }
249 /** @param n Number of post-samples to keep during zero-suppression -
250 only used in simulation. */
251 UShort_t GetZSPostSamples() const { return fZSPost; }
252 /** @param use If true, do pedestal subtraction before zero
253 suppression - only used in simulation */
254 Bool_t IsZSPedSubtract() const { return fZSPedSubtract; }
9f662337 255 /** @} */
1a1fdef7 256
9f662337 257 /** @{ */
f38b1653 258 /** @name Various varible conditions */
c2fc1258 259 /** Whether the strip is considered dead
260 @param detector Detector # (1-3)
261 @param ring Ring ID ('I' or 'O')
262 @param sector Sector number (0-39)
263 @param strip Strip number (0-511)
264 @return @c true if the strip is considered dead, @c false if
265 it's OK. */
8f6ee336 266 Bool_t IsDead(UShort_t detector,
267 Char_t ring,
268 UShort_t sector,
269 UShort_t strip) const;
270 Float_t GetThreshold() const;
c2fc1258 271 /** Gain of pre-amp.
272 @param detector Detector # (1-3)
273 @param ring Ring ID ('I' or 'O')
274 @param sector Sector number (0-39)
275 @param strip Strip number (0-511)
276 @return Gain of pre-amp. */
8f6ee336 277 Float_t GetPulseGain(UShort_t detector,
278 Char_t ring,
279 UShort_t sector,
280 UShort_t strip) const;
c2fc1258 281 /** Get mean of pedestal
282 @param detector Detector # (1-3)
283 @param ring Ring ID ('I' or 'O')
284 @param sector Sector number (0-39)
285 @param strip Strip number (0-511)
286 @return Mean of pedestal */
8f6ee336 287 Float_t GetPedestal(UShort_t detector,
288 Char_t ring,
289 UShort_t sector,
290 UShort_t strip) const;
c2fc1258 291 /** Width of pedestal
292 @param detector Detector # (1-3)
293 @param ring Ring ID ('I' or 'O')
294 @param sector Sector number (0-39)
295 @param strip Strip number (0-511)
296 @return Width of pedestal */
8f6ee336 297 Float_t GetPedestalWidth(UShort_t detector,
298 Char_t ring,
299 UShort_t sector,
300 UShort_t strip) const;
c2fc1258 301 /** zero suppression threshold (in ADC counts)
302 @param detector Detector # (1-3)
303 @param ring Ring ID ('I' or 'O')
304 @param sector Sector number (0-39)
305 @param strip Strip number (0-511)
306 @return zero suppression threshold (in ADC counts) */
8f6ee336 307 UShort_t GetZeroSuppression(UShort_t detector,
308 Char_t ring,
309 UShort_t sector,
310 UShort_t strip) const;
c2fc1258 311 /** Get the sampling rate
312 @param detector Detector # (1-3)
313 @param ring Ring ID ('I' or 'O')
314 @param sector Sector number (0-39)
315 @param strip Strip number (0-511)
316 @return The sampling rate */
317 UShort_t GetSampleRate(UShort_t detector,
318 Char_t ring,
319 UShort_t sector,
320 UShort_t strip) const;
321 /** Get the minimum strip in the read-out range
322 @param detector Detector # (1-3)
323 @param ring Ring ID ('I' or 'O')
324 @param sector Sector number (0-39)
325 @param strip Strip number (0-511)
326 @return Minimum strip */
327 UShort_t GetMinStrip(UShort_t detector,
328 Char_t ring,
329 UShort_t sector,
330 UShort_t strip) const;
331 /** Get the maximum strip in the read-out range
332 @param detector Detector # (1-3)
333 @param ring Ring ID ('I' or 'O')
334 @param sector Sector number (0-39)
335 @param strip Strip number (0-511)
336 @return Maximum strip */
337 UShort_t GetMaxStrip(UShort_t detector,
338 Char_t ring,
339 UShort_t sector,
340 UShort_t strip) const;
625d7886 341 /** Get the number of pre-samples in ALTRO channels
342 @param detector Detector # (1-3)
343 @param ring Ring ID ('I' or 'O')
344 @param sector Sector number (0-39)
345 @param strip Strip number (0-511)
346 @return Maximum strip */
347 UShort_t GetPreSamples(UShort_t,
348 Char_t,
349 UShort_t,
350 UShort_t) const { return 14+5; }
f38b1653 351 /** @} */
352
353 /** @{
354 @name Hardware to detector translation (and inverse) */
355 /** Map a hardware address into a detector index.
356 @param ddl Hardware DDL number
357 @param board FEC number
358 @param altro ALTRO number
359 @param channel Channel number
360 @param timebin Timebin
361 @param det On return, the detector #
362 @param ring On return, the ring ID
363 @param sec On return, the sector #
364 @param str On return, the base of strip #
365 @param sam On return, the sample number for this strip
366 @return @c true on success, false otherwise */
b995fc28 367 Bool_t Hardware2Detector(UShort_t ddl, UShort_t board,
368 UShort_t altro, UShort_t chan,
f38b1653 369 UShort_t timebin,
370 UShort_t& det, Char_t& ring,
371 UShort_t& sec, Short_t& str,
372 UShort_t& sam) const;
f38b1653 373 /** Map a hardware address into a detector index.
374 @param ddl Hardware DDL number
375 @param hwaddr Hardware address.
376 @param timebin Timebin
377 @param det On return, the detector #
378 @param ring On return, the ring ID
379 @param sec On return, the sector #
380 @param str On return, the base of strip #
381 @param sam On return, the sample number for this strip
382 @return @c true on success, false otherwise */
b995fc28 383 Bool_t Hardware2Detector(UShort_t ddl, UShort_t hwaddr,
f38b1653 384 UShort_t timebin,
385 UShort_t& det, Char_t& ring,
386 UShort_t& sec, Short_t& str,
387 UShort_t& sam) const;
b995fc28 388#if 0
389 /** Translate hardware address to detector coordinates
390 @param ddl DDL number
391 @param board Board address
392 @param chip Chip #
393 @param channel Channel #
394 @param det On return, Detector # (1-3)
395 @param ring On return, Ring ID ('I' or 'O')
396 @param sec On return, Sector number (0-39)
397 @param str On return, Strip number (0-511)
398 @return @c true on success. */
399 Bool_t Hardware2Detector(UShort_t ddl, UShort_t board,
400 UShort_t chip, UShort_t channel,
401 UShort_t& det, Char_t& ring,
402 UShort_t& sec, Short_t& str) const;
c2fc1258 403 /** Translate hardware address to detector coordinates
404 @param ddl DDL number
405 @param addr Hardware address
406 @param det On return, Detector # (1-3)
407 @param ring On return, Ring ID ('I' or 'O')
408 @param sec On return, Sector number (0-39)
409 @param str On return, Strip number (0-511)
410 @return @c true on success. */
b995fc28 411 Bool_t Hardware2Detector(UShort_t ddl, UShort_t addr, UShort_t& det,
f38b1653 412 Char_t& ring, UShort_t& sec, Short_t& str) const;
b995fc28 413#endif
f6449cc0 414
f38b1653 415 /** Map a detector index into a hardware address.
416 @param det The detector #
417 @param ring The ring ID
418 @param sec The sector #
419 @param str The strip #
420 @param sam The sample number
421 @param ddl On return, hardware DDL number
422 @param board On return, the FEC board address (local to DDL)
423 @param altro On return, the ALTRO number (local to FEC)
424 @param channel On return, the channel number (local to ALTRO)
425 @param timebin On return, the timebin number (local to ALTRO)
426 @return @c true on success, false otherwise */
427 Bool_t Detector2Hardware(UShort_t det, Char_t ring,
428 UShort_t sec, UShort_t str,
429 UShort_t sam,
b995fc28 430 UShort_t& ddl, UShort_t& board,
431 UShort_t& altro, UShort_t& channel,
f38b1653 432 UShort_t& timebin) const;
f38b1653 433 /** Map a detector index into a hardware address.
434 @param det The detector #
435 @param ring The ring ID
436 @param sec The sector #
437 @param str The strip #
438 @param sam The sample number
439 @param ddl On return, hardware DDL number
440 @param hwaddr On return, hardware address.
441 @param timebin On return, the timebin number (local to ALTRO)
442 @return @c true on success, false otherwise */
443 Bool_t Detector2Hardware(UShort_t det, Char_t ring,
444 UShort_t sec, UShort_t str,
445 UShort_t sam,
b995fc28 446 UShort_t& ddl, UShort_t& hwaddr,
f38b1653 447 UShort_t& timebin) const;
b995fc28 448#if 0
449 /** Translate detector coordinates to hardware address
450 @param det Detector # (1-3)
451 @param ring Ring ID ('I' or 'O')
452 @param sec Sector number (0-39)
453 @param str Strip number (0-511)
454 @param ddl On return, DDL number
455 @param board On return, Board address
456 @param chip On return, Chip #
457 @param channel On return, Channel #
458 @return @c true on success. */
459 Bool_t Detector2Hardware(UShort_t det, Char_t ring,
460 UShort_t sec, UShort_t str,
461 UShort_t& ddl, UShort_t& board,
462 UShort_t& chip, UShort_t& channel) const;
c2fc1258 463 /** Translate detector coordinates to hardware address
464 @param det Detector # (1-3)
465 @param ring Ring ID ('I' or 'O')
466 @param sec Sector number (0-39)
467 @param str Strip number (0-511)
468 @param ddl On return, DDL number
469 @param addr On return, Hardware address
470 @return @c true on success. */
bf000c32 471 Bool_t Detector2Hardware(UShort_t det, Char_t ring, UShort_t sec,
b995fc28 472 UShort_t str, UShort_t& ddl, UShort_t& addr) const;
473#endif
c2fc1258 474 /** Get the map that translates hardware to detector coordinates
475 @return Get the map that translates hardware to detector
476 coordinates */
57c3c593 477 AliFMDAltroMapping* GetAltroMap() const;
625d7886 478 /** Whether raw data has full common data header (8 32bit words) or
479 the older invalid format (7 32bit words with bogus entries)
480 @return false if the raw data has incomplete data header */
481 Bool_t HasCompleteHeader() const { return fHasCompleteHeader; }
482
9f662337 483 /** @} */
484
02a27b50 485 static const char* PulseGainPath() { return fgkPulseGain; }
486 static const char* PedestalPath() { return fgkPedestal; }
487 static const char* DeadPath() { return fgkDead; }
488 static const char* SampleRatePath() { return fgkSampleRate; }
489 static const char* AltroMapPath() { return fgkAltroMap; }
490 static const char* ZeroSuppressionPath() { return fgkZeroSuppression; }
491 static const char* StripRangePath() { return fgkStripRange; }
6cd5cd4d 492 static const char* GetPedestalShuttleID() {return fkPedestalShuttleID;}
493 static const char* GetGainShuttleID() {return fkGainShuttleID;}
494 static const char* GetConditionsShuttleID() {return fkConditionsShuttleID;}
cf12b007 495
496 Float_t GetOfflineTriggerLowCut() {return fOfflineTriggerLowCut;}
497 Float_t GetOfflineTriggerHitCut() {return fOfflineTriggerHitCut;}
498 void SetOfflineTriggerLowCut(Float_t cut) {fOfflineTriggerLowCut = cut;}
499 void SetOfflineTriggerHitCut(Float_t cut) {fOfflineTriggerHitCut = cut;}
500
497e0e62 501protected:
9f662337 502 /** CTOR */
497e0e62 503 AliFMDParameters();
02a27b50 504 /** CTOR */
505 AliFMDParameters(const AliFMDParameters& o)
b5ee4425 506 : TNamed(o),
507 fIsInit(o.fIsInit),
508 fkSiDeDxMip(o.fkSiDeDxMip),
509 fVA1MipRange(o.fVA1MipRange),
510 fAltroChannelSize(o.fAltroChannelSize),
511 fChannelsPerAltro(o.fChannelsPerAltro),
512 fPedestalFactor(o.fPedestalFactor),
cce354f6 513 fZSPre(o.fZSPre),
514 fZSPost(o.fZSPost),
515 fZSPedSubtract(o.fZSPedSubtract),
b5ee4425 516 fFixedPedestal(o.fFixedPedestal),
517 fFixedPedestalWidth(o.fFixedPedestalWidth),
518 fFixedZeroSuppression(o.fFixedZeroSuppression),
519 fFixedSampleRate(o.fFixedSampleRate),
520 fFixedThreshold(o.fFixedThreshold),
521 fFixedMinStrip(o.fFixedMinStrip),
522 fFixedMaxStrip(o.fFixedMaxStrip),
523 fFixedPulseGain(o.fFixedPulseGain),
524 fEdepMip(o.fEdepMip),
625d7886 525 fHasCompleteHeader(o.fHasCompleteHeader),
b5ee4425 526 fZeroSuppression(o.fZeroSuppression),
527 fSampleRate(o.fSampleRate),
528 fPedestal(o.fPedestal),
529 fPulseGain(o.fPulseGain),
530 fDeadMap(o.fDeadMap),
531 fAltroMap(o.fAltroMap),
cf12b007 532 fStripRange(o.fStripRange),
533 fOfflineTriggerLowCut(o.fOfflineTriggerLowCut),
534 fOfflineTriggerHitCut(o.fOfflineTriggerHitCut)
b5ee4425 535 {}
02a27b50 536 /** Assignement operator
537 @return Reference to this */
538 AliFMDParameters& operator=(const AliFMDParameters&) { return *this; }
9f662337 539 /** DTOR */
497e0e62 540 virtual ~AliFMDParameters() {}
9f662337 541 /** Singleton instance */
497e0e62 542 static AliFMDParameters* fgInstance; // Static singleton instance
f560b28c 543 /**
544 * Check if the file <i>prefix</i><i>number</i> exists in @a path,
545 * and write the full path to @a f.
546 *
547 * @param prefix File prefix (cond, peds, gains, ...)
548 * @param path Path to files
549 * @param number Detector number (1, 2, or 3)
550 * @param f On return full path to file (if found)
551 *
552 * @return @c true if file exists and is readable, @c false otherwise
553 */
554 Bool_t CheckFile(const char* prefix, const char* path,
555 int number, TString& f) const;
dc02d468 556 /** Get an entry from either global AliCDBManager or passed
557 AliFMDPreprocessor.
558 @param path Path to CDB object.
559 @param pp AliFMDPreprocessor
560 @param fatal If true, raise a fatal flag if we didn't get the entry.
561 @return AliCDBEntry if found */
562 AliCDBEntry* GetEntry(const char* path, AliFMDPreprocessor* pp,
563 Bool_t fatal=kTRUE) const;
9f662337 564 /** Initialize gains. Try to get them from CDB */
dc02d468 565 void InitPulseGain(AliFMDPreprocessor* pp=0);
9f662337 566 /** Initialize pedestals. Try to get them from CDB */
dc02d468 567 void InitPedestal(AliFMDPreprocessor* pp=0);
9f662337 568 /** Initialize dead map. Try to get it from CDB */
dc02d468 569 void InitDeadMap(AliFMDPreprocessor* pp=0);
9f662337 570 /** Initialize sample rates. Try to get them from CDB */
dc02d468 571 void InitSampleRate(AliFMDPreprocessor* pp=0);
9f662337 572 /** Initialize zero suppression thresholds. Try to get them from CDB */
dc02d468 573 void InitZeroSuppression(AliFMDPreprocessor* pp=0);
9f662337 574 /** Initialize hardware map. Try to get it from CDB */
dc02d468 575 void InitAltroMap(AliFMDPreprocessor* pp=0);
c2fc1258 576 /** Initialize strip range. Try to get it from CDB */
dc02d468 577 void InitStripRange(AliFMDPreprocessor* pp=0);
57c3c593 578
6cd5cd4d 579 Bool_t fIsInit; // Whether we've been initialised
57c3c593 580
6cd5cd4d 581 static const char* fgkPulseGain; // Path to PulseGain calib object
582 static const char* fgkPedestal; // Path to Pedestal calib object
583 static const char* fgkDead; // Path to Dead calib object
584 static const char* fgkSampleRate; // Path to SampleRate calib object
585 static const char* fgkAltroMap; // Path to AltroMap calib object
586 static const char* fgkZeroSuppression; // Path to ZeroSuppression cal object
587 static const char* fgkStripRange; // Path to strip range cal object
588 const Float_t fkSiDeDxMip; // MIP dE/dx in Silicon
589 UShort_t fVA1MipRange; // # MIPs the pre-amp can do
590 UShort_t fAltroChannelSize; // Largest # to store in 1 ADC ch.
591 UShort_t fChannelsPerAltro; // Number of pre-amp. chan/adc chan.
592 Float_t fPedestalFactor; // Number of pedestal widths
cce354f6 593 UShort_t fZSPre; // Number of pre-samples in ZS
594 UShort_t fZSPost; // Number of post-samples in ZS
595 Bool_t fZSPedSubtract; // Pedestal subtraction before ZS
1a1fdef7 596
6cd5cd4d 597 Float_t fFixedPedestal; // Pedestal to subtract
598 Float_t fFixedPedestalWidth; // Width of pedestal
599 UShort_t fFixedZeroSuppression; // Threshold for zero-suppression
600 UShort_t fFixedSampleRate; // Times the ALTRO samples pre-amp.
601 Float_t fFixedThreshold; // Threshold in ADC counts
602 UShort_t fFixedMinStrip; // Minimum strip read-out
603 UShort_t fFixedMaxStrip; // Maximum strip read-out
604 mutable Float_t fFixedPulseGain; //! Gain (cached)
605 mutable Float_t fEdepMip; //! Cache of energy loss for a MIP
6cd5cd4d 606 Bool_t fHasCompleteHeader; // raw data has incomplete data header
607
608 static const char* fkPedestalShuttleID; // Shuttle/preprocessor ID for pedestals
609 static const char* fkGainShuttleID; // Shuttle/preprocessor ID for gains
610 static const char* fkConditionsShuttleID; // Shuttle/preprocessor ID for conditions
8f6ee336 611
612 AliFMDCalibZeroSuppression* fZeroSuppression; // Zero suppression from CDB
613 AliFMDCalibSampleRate* fSampleRate; // Sample rate from CDB
614 AliFMDCalibPedestal* fPedestal; // Pedestals
615 AliFMDCalibGain* fPulseGain; // Pulser gain
616 AliFMDCalibDeadMap* fDeadMap; // Pulser gain
57c3c593 617 AliFMDAltroMapping* fAltroMap; // Map of hardware
c2fc1258 618 AliFMDCalibStripRange* fStripRange; // Strip range
8f6ee336 619
cf12b007 620 Float_t fOfflineTriggerLowCut; //offline trigger low cut
621 Float_t fOfflineTriggerHitCut; //offline trigger hit cut
622
9a090ccd 623 ClassDef(AliFMDParameters,6) // Manager of parameters
1a1fdef7 624};
625
626#endif
627//____________________________________________________________________
628//
629// Local Variables:
630// mode: C++
631// End:
632//
633// EOF
634//
635