//TString runPar = GetRunParameter("HLTStatus");
//if(runPar=="1") {
if(GetHLTStatus()) {
- if(ExtractHLT()) return 1; // for testing!
+ //if(ExtractHLT()) return 1; // for testing!
+ ExtractHLT();
}
// DAQ if HLT failed
if(!fVdriftHLT) {
- if(ExtractDriftVelocityDAQ()) return 1; // for testing!
+ //if(ExtractDriftVelocityDAQ()) return 1;
+ ExtractDriftVelocityDAQ(); // for testing!
}
}
}
Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
+ 6* 18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
Int_t nbfit = calibra->GetNumberFit();
+ Int_t nbfitSuccess = calibra->GetNumberFitSuccess();
Int_t nbE = calibra->GetNumberEnt();
// if enough statistics store the results
if ((nbtg > 0) &&
- (nbfit >= 0.5*nbE)) {
+ (nbfit >= 0.5*nbE) && (nbE > 30) && (nbfitSuccess > 30)) {
// create the cal objects
+ calibra->RemoveOutliers(1,kTRUE);
calibra->PutMeanValueOtherVectorFit(1,kTRUE);
+ calibra->RemoveOutliers2(kTRUE);
calibra->PutMeanValueOtherVectorFit2(1,kTRUE);
TObjArray object = calibra->GetVectorFit();
AliTRDCalDet *objdriftvelocitydet = calibra->CreateDetObjectVdrift(&object,kTRUE);
// gain
TH2I *histogain = (TH2I *) filehlt->Get("CH2d");
- histogain->SetDirectory(0);
if (histogain) {
+ histogain->SetDirectory(0);
// store the reference data
if(!StoreReferenceData("HLTData","Gain",(TObject *) histogain,&metaData)){
Log("Error storing 2D histos for gain");
Int_t nbE = calibra->GetNumberEnt();
// enough statistics
if ((nbtg > 0) &&
- (nbfit >= 0.5*nbE)) {
+ (nbfit >= 0.5*nbE) && (nbE > 30)) {
// create the cal objects
calibra->PutMeanValueOtherVectorFit(1,kTRUE);
TObjArray object = calibra->GetVectorFit();
// vdrift
fVdriftHLT = kFALSE;
TProfile2D *histodriftvelocity = (TProfile2D *) filehlt->Get("PH2d");
- histodriftvelocity->SetDirectory(0);
if (histodriftvelocity) {
+ histodriftvelocity->SetDirectory(0);
// store the reference data
if(!StoreReferenceData("HLTData","VdriftT0",(TObject *) histodriftvelocity,&metaData)){
Log("Error storing 2D Profile for average pulse height (HLT)");
Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
+ 6* 18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
Int_t nbfit = calibra->GetNumberFit();
+ Int_t nbfitSuccess = calibra->GetNumberFitSuccess();
Int_t nbE = calibra->GetNumberEnt();
// enough statistics
if ((nbtg > 0) &&
- (nbfit >= 0.5*nbE)) {
+ (nbfit >= 0.5*nbE) && (nbE > 30) && (nbfitSuccess > 30)) {
// create the cal objects
+ calibra->RemoveOutliers(1,kTRUE);
calibra->PutMeanValueOtherVectorFit(1,kTRUE);
+ calibra->RemoveOutliers2(kTRUE);
calibra->PutMeanValueOtherVectorFit2(1,kTRUE);
TObjArray object = calibra->GetVectorFit();
AliTRDCalDet *objdriftvelocitydet = calibra->CreateDetObjectVdrift(&object,kTRUE);
// prf
TProfile2D *histoprf = (TProfile2D *) filehlt->Get("PRF2d");
- histoprf->SetDirectory(0);
if (histoprf) {
+ histoprf->SetDirectory(0);
// store reference data
if(!StoreReferenceData("HLTData","PRF",(TObject *) histoprf,&metaData)){
Log("Error storing the 2D Profile for Pad Response Function");
Int_t nbE = calibra->GetNumberEnt();
// enough statistics
if ((nbtg > 0) &&
- (nbfit >= 0.95*nbE)) {
+ (nbfit >= 0.95*nbE) && (nbE > 30)) {
// create cal pad objects
TObjArray object = calibra->GetVectorFit();
TObject *objPRFpad = calibra->CreatePadObjectPRF(&object);
// parse it/them and store TObjArrays in the CDB
//
// return 0 for success, otherwise:
- // 5 : Could not get the SOR and EOR file from the FXS
- // 8 : Something wrong with the SOR file
- // 9 : Something wrong with the EOR file
+ // 5 : Could not get the (SOR and EOR) or SOR file from the FXS
+ // 8 : Both files are not valid
// 10 : SOR XML is not well-formed
// 11 : EOR XML is not well-formed
- // 12 : ERROR in XML SAX validation: something wrong with the content
- // 14 : ERROR while creating calibration objects in the handler
- // 15 : ERROR while storing data in the CDB
+ // 12 : ERROR in SOR XML SAX validation: something wrong with the content
+ // 12 : ERROR in EOR XML SAX validation: something wrong with the content
+ // 14 : ERROR while creating SOR calibration objects in the handler
+ // 15 : ERROR while creating EOR calibration objects in the handler
+ // 16 : ERROR while storing data in the CDB
//
Log("Processing the DCS config summary files.");
// get the XML files
Log("Requesting the 2 summaryfiles from the FXS..");
- const char *xmlFileS = GetFile(kDCS,"CONFIGSUMMARYSOR","");
- const char *xmlFileE = GetFile(kDCS,"CONFIGSUMMARYEOR","");
+ TString xmlFileS = GetFile(kDCS,"CONFIGSUMMARYSOR","");
+ TString xmlFileE = GetFile(kDCS,"CONFIGSUMMARYEOR","");
// Request EOR and SOR files from the fxs, if both are not found exit
- if (xmlFileS == NULL && xmlFileE == NULL) {
- Log(Form("ERROR: SOR and EOR Files %s and %s not found!",xmlFileS,xmlFileE));
- return 5;
- }
+ Bool_t fileExistE = kTRUE, fileExistS = kTRUE;
- Bool_t fileExistE = true, fileExistS = true;
+ // check if the files are there
+ if (xmlFileS.IsNull()) {
+ Log(Form("Warning: SOR file %s not found!", xmlFileS.Data()));
+ fileExistS = kFALSE;
+ } else Log(Form("SOR file found: %s", xmlFileS.Data()));
- if (xmlFileS == NULL) {
- Log(Form("Warning: SOR File %s not found!",xmlFileS));
- fileExistE = false;
- } else if (xmlFileE == NULL) {
- Log(Form("Warning: EOR File %s not found!",xmlFileE));
- fileExistS = false;
- } else {
- Log(Form("Both Files (%s and %s) found.",xmlFileS,xmlFileE));
+ if (xmlFileE.IsNull()) {
+ Log(Form("Warning: EOR file %s not found!", xmlFileE.Data()));
+ fileExistE = kFALSE;
+ } else Log(Form("EOR file found: %s", xmlFileE.Data()));
+
+ if (fileExistS==0 && fileExistE==0) {
+ Log(Form("ERROR: SOR and EOR files not found: %s and %s", xmlFileS.Data(), xmlFileE.Data()));
+ return 5;
}
+ // test the files
if (fileExistS) {
- // test the files
+ Log("Checking if SOR file is valid.");
std::ifstream fileTestS;
- fileTestS.open(xmlFileS, std::ios_base::binary | std::ios_base::in);
+ fileTestS.open(xmlFileS.Data(), std::ios_base::binary | std::ios_base::in);
if (!fileTestS.good() || fileTestS.eof() || !fileTestS.is_open()) {
- Log(Form("ERROR: File %s not valid!",xmlFileS));
- return 8;
+ Log(Form("Warning: File %s not valid!",xmlFileS.Data()));
+ fileExistS = kFALSE;
+ return 5;
}
+ Log("Checking if SOR file is not empty.");
fileTestS.seekg(0, std::ios_base::end);
if (static_cast<int>(fileTestS.tellg()) < 2) {
- Log(Form("ERROR: File %s is empty!",xmlFileS));
- return 8;
+ Log(Form("Warning: File %s is empty!",xmlFileS.Data()));
+ fileExistS = kFALSE;
+ return 5;
}
}
+
if (fileExistE) {
+ Log("Checking if EOR file is valid.");
std::ifstream fileTestE;
- fileTestE.open(xmlFileE, std::ios_base::binary | std::ios_base::in);
+ fileTestE.open(xmlFileE.Data(), std::ios_base::binary | std::ios_base::in);
if (!fileTestE.good() || fileTestE.eof() || !fileTestE.is_open()) {
- Log(Form("ERROR: File %s not valid!",xmlFileE));
- return 9;
+ Log(Form("Warning: File %s not valid!",xmlFileE.Data()));
+ fileExistE = kFALSE;
}
+ Log("Checking if EOR file is not empty.");
fileTestE.seekg(0, std::ios_base::end);
if (static_cast<int>(fileTestE.tellg()) < 2) {
- Log(Form("ERROR: File %s is empty!",xmlFileE));
- return 9;
+ Log(Form("Warning: File %s is empty!",xmlFileE.Data()));
+ fileExistE = kFALSE;
}
}
- Log("Tested files are valid.");
+ if (fileExistS==0 && fileExistE==0) {
+ Log("ERROR: Both files (SOR/EOR) are not valid!");
+ return 8;
+ }
+
+ Log("One or both of the tested files are valid.");
// make a robust XML validation
TSAXParser testParser;
- if (fileExistS && testParser.ParseFile(xmlFileS) < 0 ) {
+ if (fileExistS && testParser.ParseFile(xmlFileS.Data()) < 0 ) {
Log("ERROR: XML content (SOR) is not well-formed.");
return 10;
- } else if (fileExistE && testParser.ParseFile(xmlFileE) < 0 ) {
+ } else if (fileExistE && testParser.ParseFile(xmlFileE.Data()) < 0 ) {
Log("ERROR: XML content (EOR) is not well-formed.");
return 11;
}
// create parser and parse
TSAXParser saxParserS, saxParserE;
AliTRDSaxHandler saxHandlerS, saxHandlerE;
-
if (fileExistS) {
saxParserS.ConnectToHandler("AliTRDSaxHandler", &saxHandlerS);
- saxParserS.ParseFile(xmlFileS);
+ saxParserS.ParseFile(xmlFileS.Data());
}
if (fileExistE) {
saxParserE.ConnectToHandler("AliTRDSaxHandler", &saxHandlerE);
- saxParserE.ParseFile(xmlFileE);
+ saxParserE.ParseFile(xmlFileE.Data());
}
-
- // report errors if present
- if (((fileExistS && saxParserS.GetParseCode() == 0) || !fileExistS) && (!fileExistE || (fileExistE && saxParserE.GetParseCode() == 0))) {
- Log("XML file validation OK.");
- } else {
- if (fileExistS) {
- Log(Form("ERROR in XML file validation. SOR Parse Code: %s", saxParserS.GetParseCode()));
- }
- if (fileExistE) {
- Log(Form("ERROR in XML file validation. EOR Parse Code: %s", saxParserE.GetParseCode()));
- }
+ // report errors of the parser if present
+ if (fileExistS && saxParserS.GetParseCode() != 0) {
+ Log(Form("ERROR in XML file validation. SOR Parse Code: %s", saxParserS.GetParseCode()));
return 12;
}
- if (((fileExistS && saxHandlerS.GetHandlerStatus() == 0) || !fileExistS) && (!fileExistE || (saxHandlerE.GetHandlerStatus() == 0))) {
- Log("SAX handler reports no errors.");
- } else {
- if (fileExistS) {
- Log(Form("ERROR while creating calibration objects. SOR Error code: %s", saxHandlerS.GetHandlerStatus()));
- }
- if (fileExistE) {
- Log(Form("ERROR while creating calibration objects. EOR Error code: %s", saxHandlerE.GetHandlerStatus()));
- }
- return 14;
+ if (fileExistE && saxParserE.GetParseCode() != 0) {
+ Log(Form("ERROR in XML file validation. EOR Parse Code: %s", saxParserE.GetParseCode()));
+ return 13;
+ }
+ Log("XML file validation OK.");
+ // report errors of the handler if present
+ if (fileExistS && saxHandlerS.GetHandlerStatus() != 0) {
+ Log(Form("ERROR while creating calibration objects. SOR Error code: %s", saxHandlerS.GetHandlerStatus()));
+ return 14;
+ }
+ if (fileExistE && saxHandlerE.GetHandlerStatus() != 0) {
+ Log(Form("ERROR while creating calibration objects. EOR Error code: %s", saxHandlerE.GetHandlerStatus()));
+ return 15;
}
+ Log("SAX handler reports no errors.");
// put both objects in one TObjArray to store them
TObjArray* fCalObjArray = new TObjArray(2);
if (fileExistS) {
AliTRDCalDCS* fCalDCSObjSOR = saxHandlerS.GetCalDCSObj();
fCalDCSObjSOR->EvaluateGlobalParameters();
+ fCalDCSObjSOR->SetRunType(GetRunType());
+ fCalDCSObjSOR->SetStartTime(GetStartTimeDCSQuery());
+ fCalDCSObjSOR->SetEndTime(GetEndTimeDCSQuery());
fCalObjArray->AddAt(fCalDCSObjSOR,0);
+ Log("TRDCalDCS object for SOR created.");
}
if (fileExistE) {
AliTRDCalDCS* fCalDCSObjEOR = saxHandlerE.GetCalDCSObj();
fCalDCSObjEOR->EvaluateGlobalParameters();
+ fCalDCSObjEOR->SetRunType(GetRunType());
+ fCalDCSObjEOR->SetStartTime(GetStartTimeDCSQuery());
+ fCalDCSObjEOR->SetEndTime(GetEndTimeDCSQuery());
fCalObjArray->AddAt(fCalDCSObjEOR,1);
+ Log("TRDCalDCS object for EOR created.");
}
// store the DCS calib data in the CDB
metaData1.SetComment("DCS configuration data in two AliTRDCalDCS objects in one TObjArray (0:SOR, 1:EOR).");
if (!Store("Calib", "DCS", fCalObjArray, &metaData1, 0, kTRUE)) {
Log("problems while storing DCS config data object");
- return 15;
+ return 16;
} else {
Log("DCS config data object stored.");
}
//delete fCalObjArray;
- Log("Processing of the DCS config summary file DONE.");
+ Log("SUCCESS: Processing of the DCS config summary file DONE.");
return 0;
-}
\ No newline at end of file
+}
+
+
+