// Latest changes by Christian Holm Christensen
//
-// #include <iostream>
+ #include <iostream>
#include <fstream>
#include "AliFMDPreprocessor.h"
;
#endif
+
+//____________________________________________________
+AliFMDPreprocessor::AliFMDPreprocessor(AliShuttleInterface* shuttle)
+ : AliPreprocessor("FMD", shuttle)
+{
+ AddRunType("PHYSICS");
+ AddRunType("STANDALONE");
+ AddRunType("PEDESTAL");
+ AddRunType("GAIN");
+}
+
+
//____________________________________________________
Bool_t AliFMDPreprocessor::GetAndCheckFileSources(TList*& list,
Int_t system,
Bool_t resultRange = kTRUE;
Bool_t resultRate = kTRUE;
Bool_t resultZero = kTRUE;
-
+ Bool_t infoCalib = kTRUE;
// Do we need this ?
// if(!dcsAliasMap) return 1;
//
// Invoking the cdb manager and the FMD parameters class
// AliCDBManager* cdb = AliCDBManager::Instance();
- // cdb->SetDefaultStorage("local://$ALICE_ROOT");
+ // cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
// cdb->SetRun(0);
AliFMDParameters* pars = AliFMDParameters::Instance();
pars->Init(this, false, AliFMDParameters::kAltroMap);
-
// This is if the SOR contains Fee parameters, and we run a DA to
// extract these parameters. The same code could work if we get
// the information from DCS via the FXS
AliFMDCalibSampleRate* calibRate = 0;
AliFMDCalibStripRange* calibRange = 0;
AliFMDCalibZeroSuppression* calibZero = 0;
- // Disabled for now.
-#if 0
- if (GetAndCheckFileSources(files, kDAQ,"info"))
- GetInfoCalibration(files, calibRate, calibRange, calibZero);
+
+ if (GetAndCheckFileSources(files, kDAQ,pars->GetConditionsShuttleID()))
+ infoCalib = GetInfoCalibration(files, calibRate, calibRange, calibZero);
+
resultRate = (!calibRate ? kFALSE : kTRUE);
resultRange = (!calibRange ? kFALSE : kTRUE);
resultZero = (!calibZero ? kFALSE : kTRUE);
-#endif
+
- // Gt the run type
+ // Get the run type
TString runType(GetRunType());
//Creating calibration objects
AliFMDCalibPedestal* calibPed = 0;
AliFMDCalibGain* calibGain = 0;
if (runType.Contains("PEDESTAL", TString::kIgnoreCase)) {
- if (GetAndCheckFileSources(files, kDAQ, "pedestals")) {
+ if (GetAndCheckFileSources(files, kDAQ, pars->GetPedestalShuttleID())) {
if(files->GetSize())
calibPed = GetPedestalCalibration(files);
}
resultPed = (calibPed ? kTRUE : kFALSE);
}
- if (runType.Contains("PULSER", TString::kIgnoreCase)) {
- if (GetAndCheckFileSources(files, kDAQ, "gains")) {
+ if (runType.Contains("GAIN", TString::kIgnoreCase)) {
+ if (GetAndCheckFileSources(files, kDAQ, pars->GetGainShuttleID())) {
if(files->GetSize())
calibGain = GetGainCalibration(files);
}
delete calibZero;
}
-#if 0
- // Disabled until we implement GetInfoCalibration properly
Bool_t success = (resultPed && resultGain && resultRange &&
- resultRate && resultZero);
-#endif
- Bool_t success = resultPed && resultGain;
+ resultRate && resultZero && infoCalib);
+
Log(Form("FMD preprocessor was %s", (success ? "successful" : "failed")));
return (success ? 0 : 1);
}
// z On return, newly allocated object
// Return:
// kTRUE on success
- if (!files) return kTRUE; // Should really be false
- if (files->GetEntries() <= 0) return kTRUE;
+ if (!files) return kFALSE; // Should really be false
+ if (files->GetEntries() <= 0) return kFALSE;
s = new AliFMDCalibSampleRate();
r = new AliFMDCalibStripRange();
z = new AliFMDCalibZeroSuppression();
- // AliFMDParameters* pars = AliFMDParameters::Instance();
+ AliFMDParameters* pars = AliFMDParameters::Instance();
TIter iter(files);
TObjString* fileSource;
while((fileSource = dynamic_cast<TObjString*>(iter.Next()))) {
- const Char_t* filename = GetFile(kDAQ, "info", fileSource->GetName());
+ const Char_t* filename = GetFile(kDAQ, pars->GetConditionsShuttleID(), fileSource->GetName());
std::ifstream in(filename);
if(!in) {
Log(Form("File %s not found!", filename));
continue;
}
+ s->ReadFromFile(in);
+ r->ReadFromFile(in);
}
return kTRUE;
}
TObjString* fileSource;
while((fileSource = dynamic_cast<TObjString*>(iter.Next()))) {
- const Char_t* filename = GetFile(kDAQ, "pedestals", fileSource->GetName());
+ const Char_t* filename = GetFile(kDAQ, pars->GetPedestalShuttleID(), fileSource->GetName());
std::ifstream in(filename);
if(!in) {
Log(Form("File %s not found!", filename));
TString header;
header.ReadLine(in);
header.ToLower();
- if(!header.Contains("pedestal")) {
+ if(!header.Contains(pars->GetPedestalShuttleID())) {
Log("File header is not from pedestal!");
continue;
}
Log(Form("Bad read at line %d in %s", lineno, filename));
break;
}
- UInt_t ddl=2, board, chip, channel, strip, sample, tb;
+ UShort_t det, sec, strip;
+ Char_t ring;
Float_t ped, noise, mu, sigma, chi2ndf;
- Char_t c[11];
+ Char_t c[8];
- in >> ddl >> c[0]
- >> board >> c[1]
- >> chip >> c[2]
- >> channel >> c[3]
- >> strip >> c[4]
- >> sample >> c[5]
- >> tb >> c[6]
- >> ped >> c[7]
- >> noise >> c[8]
- >> mu >> c[9]
- >> sigma >> c[10]
+ in >> det >> c[0]
+ >> ring >> c[1]
+ >> sec >> c[2]
+ >> strip >> c[3]
+ >> ped >> c[4]
+ >> noise >> c[5]
+ >> mu >> c[6]
+ >> sigma >> c[7]
>> chi2ndf;
lineno++;
// Ignore trailing garbage
- if (strip > 127) continue;
+ // if (strip > 127) continue;
//Setting DDL to comply with the FMD in DAQ
- UInt_t FmdDDLBase = 3072;
- ddl = ddl - FmdDDLBase;
+ // UInt_t FmdDDLBase = 3072;
+ // ddl = ddl - FmdDDLBase;
//Setting the pedestals via the hardware address
- UShort_t det, sec, str;
- Char_t ring;
- pars->Hardware2Detector(ddl,board,chip,channel,det,ring,sec,str);
- strip += str;
+
+ // pars->Hardware2Detector(ddl,board,chip,channel,det,ring,sec,str);
+ // strip += str;
calibPed->Set(det,ring,sec,strip,ped,noise);
TIter iter(gainFiles);
TObjString* fileSource;
while((fileSource = dynamic_cast<TObjString *>(iter.Next()))) {
- const Char_t* filename = GetFile(kDAQ, "gains", fileSource->GetName());
+ const Char_t* filename = GetFile(kDAQ, pars->GetGainShuttleID(), fileSource->GetName());
std::ifstream in(filename);
if(!in) {
Log(Form("File %s not found!", filename));
TString header;
header.ReadLine(in);
header.ToLower();
- if(!header.Contains("gain")) {
+ if(!header.Contains(pars->GetGainShuttleID())) {
Log("File header is not from gain!");
continue;
}
Log(Form("Bad read at line %d in %s", lineno, filename));
break;
}
- UInt_t ddl=2, board, chip, channel, strip;
+ UShort_t det, sec, strip;
+ Char_t ring;
+
Float_t gain,error, chi2ndf;
- Char_t c[7];
-
- in >> ddl >> c[0]
- >> board >> c[1]
- >> chip >> c[2]
- >> channel >> c[3]
- >> strip >> c[4]
- >> gain >> c[5]
- >> error >> c[6]
+ Char_t c[6];
+
+ in >> det >> c[0]
+ >> ring >> c[1]
+ >> sec >> c[2]
+ >> strip >> c[3]
+ >> gain >> c[4]
+ >> error >> c[5]
>> chi2ndf;
lineno++;
// Ignore trailing garbage
- if(strip > 127) continue;
+ //if(strip > 127) continue;
//Setting DDL to comply with the FMD in DAQ
- UInt_t FmdDDLBase = 3072;
- ddl = ddl - FmdDDLBase;
+ // UInt_t FmdDDLBase = 3072;
+ // ddl = ddl - FmdDDLBase;
//Setting the pedestals via the hardware address
- UShort_t det, sec, str;
- Char_t ring;
- pars->Hardware2Detector(ddl,board,chip,channel,det,ring,sec,str);
+ // pars->Hardware2Detector(ddl,board,chip,channel,det,ring,sec,str);
- strip += str;
+ // strip += str;
calibGain->Set(det,ring,sec,strip,gain);
}
}