X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=FMD%2FAliFMDPreprocessor.cxx;h=57fc71fedd3e7cd3407258e1c4e96295789064fc;hp=e3bab082bcc025a409462e8b65a9b018eb83c4a1;hb=162637e45086576ffcf0568d28fa43359819765a;hpb=bd44b1d9c1753c5e9f7e1f8707d45658beee58d5 diff --git a/FMD/AliFMDPreprocessor.cxx b/FMD/AliFMDPreprocessor.cxx index e3bab082bcc..57fc71fedd3 100644 --- a/FMD/AliFMDPreprocessor.cxx +++ b/FMD/AliFMDPreprocessor.cxx @@ -58,7 +58,7 @@ // Latest changes by Christian Holm Christensen // -// #include + #include #include #include "AliFMDPreprocessor.h" @@ -83,6 +83,18 @@ ClassImp(AliFMDPreprocessor) ; #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, @@ -130,17 +142,16 @@ UInt_t AliFMDPreprocessor::Process(TMap* /* dcsAliasMap */) 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 @@ -148,30 +159,30 @@ UInt_t AliFMDPreprocessor::Process(TMap* /* dcsAliasMap */) 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); } @@ -205,12 +216,9 @@ UInt_t AliFMDPreprocessor::Process(TMap* /* dcsAliasMap */) 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); } @@ -230,24 +238,26 @@ AliFMDPreprocessor::GetInfoCalibration(TList* files, // 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(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; } @@ -272,7 +282,7 @@ AliFMDPreprocessor::GetPedestalCalibration(TList* pedFiles) TObjString* fileSource; while((fileSource = dynamic_cast(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)); @@ -283,7 +293,7 @@ AliFMDPreprocessor::GetPedestalCalibration(TList* pedFiles) TString header; header.ReadLine(in); header.ToLower(); - if(!header.Contains("pedestal")) { + if(!header.Contains(pars->GetPedestalShuttleID())) { Log("File header is not from pedestal!"); continue; } @@ -299,36 +309,33 @@ AliFMDPreprocessor::GetPedestalCalibration(TList* pedFiles) 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); @@ -355,7 +362,7 @@ AliFMDPreprocessor::GetGainCalibration(TList* gainFiles) TIter iter(gainFiles); TObjString* fileSource; while((fileSource = dynamic_cast(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)); @@ -366,7 +373,7 @@ AliFMDPreprocessor::GetGainCalibration(TList* gainFiles) TString header; header.ReadLine(in); header.ToLower(); - if(!header.Contains("gain")) { + if(!header.Contains(pars->GetGainShuttleID())) { Log("File header is not from gain!"); continue; } @@ -382,31 +389,30 @@ AliFMDPreprocessor::GetGainCalibration(TList* gainFiles) 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); } }