74 #include <TTimeStamp.h> 76 #include <TObjString.h> 82 #if 0 // Do not remove - here to make Emacs happy 114 case kDAQ: sys =
"DAQ";
break;
115 case kDCS: sys =
"DCS";
break;
116 default: sys =
"unknown";
break;
118 Log(Form(
"Failed to get file sources for %s/%d", sys.Data(), system));
140 Bool_t resultPed = kTRUE;
141 Bool_t resultGain = kTRUE;
142 Bool_t resultRange = kTRUE;
143 Bool_t resultRate = kTRUE;
144 Bool_t resultZero = kTRUE;
145 Bool_t infoCalib = kTRUE;
146 Bool_t resultDead = kTRUE;
159 if(runType.Contains(
"PEDESTAL", TString::kIgnoreCase))
161 else if(runType.Contains(
"GAIN", TString::kIgnoreCase))
177 resultRate = (!calibRate ? kFALSE : kTRUE);
178 resultRange = (!calibRange ? kFALSE : kTRUE);
179 resultZero = (!calibZero ? kFALSE : kTRUE);
187 if (runType.Contains(
"PEDESTAL", TString::kIgnoreCase)) {
192 resultPed = (calibPed ? kTRUE : kFALSE);
194 if (runType.Contains(
"GAIN", TString::kIgnoreCase)) {
199 resultGain = (calibGain ? kTRUE : kFALSE);
201 if(runType.Contains(
"PEDESTAL", TString::kIgnoreCase) || runType.Contains(
"GAIN", TString::kIgnoreCase))
208 metaData.
SetComment(
"Preprocessor stores pedestals and gains for the FMD.");
211 resultPed =
Store(
"Calib",
"Pedestal", calibPed, &metaData, 0, kTRUE);
215 resultGain =
Store(
"Calib",
"PulseGain", calibGain, &metaData, 0, kTRUE);
219 resultRange =
Store(
"Calib",
"StripRange", calibRange, &metaData, 0, kTRUE);
223 resultRate =
Store(
"Calib",
"SampleRate", calibRate, &metaData, 0, kTRUE);
227 resultZero =
Store(
"Calib",
"ZeroSuppression", calibZero,&metaData,0,kTRUE);
231 resultDead =
Store(
"Calib",
"Dead", calibDead,&metaData,0,kTRUE);
235 Bool_t success = (resultPed && resultGain && resultRange &&
236 resultRate && resultZero && resultDead && infoCalib);
238 Log(Form(
"FMD preprocessor was %s", (success ?
"successful" :
"failed")));
239 return (success ? 0 : 1);
257 if (!files)
return kFALSE;
258 if (files->GetEntries() <= 0)
return kFALSE;
266 TObjString* fileSource;
268 while((fileSource = dynamic_cast<TObjString*>(iter.Next()))) {
270 std::ifstream in(filename);
272 Log(Form(
"File %s not found!", filename));
293 if(!pedFiles)
return 0;
297 TIter iter(pedFiles);
298 TObjString* fileSource;
300 while((fileSource = dynamic_cast<TObjString*>(iter.Next()))) {
302 fileSource->GetName());
303 std::ifstream in(filename);
305 Log(Form(
"File %s not found!", filename));
311 while((cc = in.peek())!=EOF) {
313 Log(Form(
"Bad read at line %d in %s", lineno, filename));
323 Log(Form(
"File header is not from pedestal!: %s", line.Data()));
326 Log(
"File contains data from pedestals");
330 UShort_t det, sec, strip;
332 Float_t ped, noise, mu, sigma, chi2ndf;
358 calibPed->
Set(det,ring,sec,strip,ped,noise);
376 if(!gainFiles)
return 0;
380 TIter iter(gainFiles);
381 TObjString* fileSource;
382 while((fileSource = dynamic_cast<TObjString *>(iter.Next()))) {
384 fileSource->GetName());
385 std::ifstream in(filename);
387 Log(Form(
"File %s not found!", filename));
393 while((cc = in.peek())!=EOF) {
395 Log(Form(
"Bad read at line %d in %s", lineno, filename));
405 Log(Form(
"File header is not from gains!: %s", line.Data()));
408 Log(
"File contains data from gains");
412 UShort_t det, sec, strip;
415 Float_t gain,error, chi2ndf;
436 calibGain->
Set(det,ring,sec,strip,gain);
453 for(UShort_t det=1;det<=3;det++) {
454 Int_t nRings = (det==1 ? 1 : 2);
455 for (UShort_t ir = 0; ir < nRings; ir++) {
456 Char_t ring = (ir == 0 ?
'I' :
'O');
457 UShort_t nsec = (ir == 0 ? 20 : 40);
458 UShort_t nstr = (ir == 0 ? 512 : 256);
460 for(UShort_t sec =0; sec < nsec; sec++) {
462 for(UShort_t strip = 0; strip < nstr; strip++) {
464 Bool_t isDead = kFALSE;
466 noise = pedcalib->
Width(det, ring, sec, strip);
471 gain = gaincalib->
Value(det, ring, sec, strip);
476 if (gain < 0.5 || gain > 5 || noise > 10 || noise == 0) isDead = kTRUE;
478 deadmap->operator()(det, ring, sec, strip) = isDead;
Bool_t Store(const char *pathLevel2, const char *pathLevel3, TObject *object, AliCDBMetaData *metaData, Int_t validityStart=0, Bool_t validityInfinite=kFALSE)
TList * GetFileSources(Int_t system, const char *id=0)
Map of an integer per strip.
Bool_t GetAndCheckFileSources(TList *&list, Int_t system, const char *id)
Float_t Width(UShort_t det, Char_t ring, UShort_t sec, UShort_t str)
AliFMDCalibDeadMap * GetDeadChannelMap(AliFMDCalibPedestal *pedcalib, AliFMDCalibGain *gaincalib)
AliCDBEntry * GetFromOCDB(const char *pathLevel2, const char *pathLevel3)
AliFMDUShortMap AliFMDCalibZeroSuppression
void ReadFromFile(std::istream &inFile)
This class is a singleton that handles various parameters of the FMD detectors. This class reads from...
Manager of FMD parameters.
Float_t GetPulseGain(UShort_t detector, Char_t ring, UShort_t sector, UShort_t strip) const
void Set(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, Float_t val)
Per digitizer card pulser calibration.
AliFMDBoolMap AliFMDCalibDeadMap
const char * GetFile(Int_t system, const char *id, const char *source)
void Set(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, Float_t ped, Float_t pedW)
Per strip pedestal calibration.
Gain value and width for each strip in the FMD.
Per digitizer card pulser calibration.
Per digitizer card pulser calibration.
MAp of per strip boolean values.
Bool_t GetInfoCalibration(TList *files, AliFMDCalibSampleRate *&s, AliFMDCalibStripRange *&r, AliFMDCalibZeroSuppression *&z)
static const char * GetGainShuttleID()
void AddRunType(const char *runType)
Per strip gain calibration.
AliFMDCalibPedestal * GetPedestalCalibration(const TList *list)
static const char * GetConditionsShuttleID()
virtual UInt_t Process(TMap *dcsAliasMap)
void Log(const char *message, UInt_t level=3)
static AliFMDParameters * Instance()
const char * GetRunType()
AliFMDCalibGain * GetGainCalibration(const TList *)
Per digitizer card pulser calibration.
void ReadFromFile(std::istream &)
Float_t Value(UShort_t det, Char_t ring, UShort_t sec, UShort_t str)
static const char * GetPedestalShuttleID()
AliCDBEntry * GetFromCDB(const char *second, const char *third)
Float_t GetPedestalWidth(UShort_t detector, Char_t ring, UShort_t sector, UShort_t strip) const
Pedestal value and width for each strip in the FMD.
UShort_t Init(Bool_t forceReInit=kFALSE, UInt_t what=kAll)