// //
// Authors: //
// R. Bailhache (R.Bailhache@gsi.de) //
+// J. Book (jbook@ikf.uni-frankfurt.de) //
// W. Monange (w.monange@gsi.de) //
// F. Kramer (kramer@ikf.uni-frankfurt.de) //
// //
#include "AliTRDCalibPadStatus.h"
#include "AliTRDSaxHandler.h"
#include "AliTRDgeometry.h"
+#include "AliTRDCalibChamberStatus.h"
#include "Cal/AliTRDCalPad.h"
#include "Cal/AliTRDCalPadStatus.h"
-#include "Cal/AliTRDCalDCS.h"
+#include "Cal/AliTRDCalDCSv2.h"
#include "Cal/AliTRDCalSingleChamberStatus.h"
+#include "Cal/AliTRDCalChamberStatus.h"
#include "Cal/AliTRDCalROC.h"
ClassImp(AliTRDPreprocessor)
//______________________________________________________________________________________________
AliTRDPreprocessor::AliTRDPreprocessor(AliShuttleInterface *shuttle)
:AliPreprocessor("TRD", shuttle)
+ ,fCalDCSObjSOR(0)
+ ,fCalDCSObjEOR(0)
,fVdriftHLT(0)
{
//
// Constructor
//
+
AddRunType("PHYSICS");
AddRunType("STANDALONE");
AddRunType("PEDESTAL");
AddRunType("DAQ");
+
+}
+//______________________________________________________________________________________________
+ AliTRDPreprocessor::AliTRDPreprocessor(const AliTRDPreprocessor& ) :
+ AliPreprocessor("TRD",0),
+ fCalDCSObjSOR(0),
+ fCalDCSObjEOR(0),
+ fVdriftHLT(0)
+{
+
+ Fatal("AliTRDPreprocessor", "copy constructor not implemented");
+
}
-
//______________________________________________________________________________________________
AliTRDPreprocessor::~AliTRDPreprocessor()
{
// Destructor
//
-}
+ if (fCalDCSObjSOR ) delete fCalDCSObjSOR;
+ if (fCalDCSObjEOR ) delete fCalDCSObjEOR;
+}
+//______________________________________________________________________________________________
+AliTRDPreprocessor& AliTRDPreprocessor::operator = (const AliTRDPreprocessor& )
+{
+ Fatal("operator =", "assignment operator not implemented");
+ return *this;
+}
//______________________________________________________________________________________________
void AliTRDPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
{
//
AliPreprocessor::Initialize(run,startTime,endTime);
-
+
}
//______________________________________________________________________________________________
Log(Form("runtype %s\n",runType.Data()));
// always process the configuration data
- Int_t DCSConfigReturn = ProcessDCSConfigData();
- if(DCSConfigReturn) return DCSConfigReturn;
-
+ Int_t dCSConfigReturn = ProcessDCSConfigData();
+ if(dCSConfigReturn) return dCSConfigReturn;
+
if (runType=="PEDESTAL"){
if(ExtractPedestals()) return 1;
return 0;
if ((runType=="PHYSICS") || (runType=="STANDALONE") || (runType=="DAQ")){
// DCS
- if(ProcessDCS(dcsAliasMap)) return 1;
+ if(ProcessDCS(dcsAliasMap)) return 1;
if(runType=="PHYSICS"){
// HLT if On
//TString runPar = GetRunParameter("HLTStatus");
}
// DAQ if HLT failed
if(!fVdriftHLT) {
- if(ExtractDriftVelocityDAQ()) return 1; // for testing!
+ //if(ExtractDriftVelocityDAQ()) return 1;
+ ExtractDriftVelocityDAQ(); // for testing!
}
}
+ //if((runType=="PHYSICS") || (runType=="STANDALONE")) {
+ // if(ExtractHalfChamberStatusDAQ()) return 1;
+ //}
}
return 0;
Log("****** DCS ******\n");
- TObjArray * list=AliTRDSensorArray::GetList ();
+ TObjArray * list=AliTRDSensorArray::GetList();
if (list == 0x0) {
Log ("Error during AliTRDSensorArray::GetList");
}
Log ("*********** End of DCS **********");
- delete results;
- delete nGraph;
+ delete [] results;
+ delete [] nGraph;
return error;
}
+//______________________________________________________________________________________________
+Bool_t AliTRDPreprocessor::ExtractHalfChamberStatusDAQ()
+{
+ //
+ // Half chamber status algorithm running on DAQ
+ //
+ Bool_t error = kFALSE;
+
+ AliCDBMetaData metaData;
+ metaData.SetBeamPeriod(0);
+ metaData.SetResponsible("Raphaelle Bailhache");
+ metaData.SetComment("TRD calib test");
+
+ // Take the output of the DA on DAQ
+ TList * listpad = GetFileSources(kDAQ,"HALFCHAMBERSTATUS");
+ if (!listpad) {
+ Log("No list found for the HalfChamberStatus");
+ return kTRUE;
+ }
+
+ AliTRDCalibChamberStatus *calPed = 0x0;
+
+ // loop through all files (only one normally)
+ UInt_t index = 0;
+ while (listpad->At(index)!=NULL) {
+ TObjString* fileNameEntry = (TObjString*) listpad->At(index);
+ if (fileNameEntry != NULL)
+ {
+ TString fileName = GetFile(kDAQ, "HALFCHAMBERSTATUS",
+ fileNameEntry->GetString().Data());
+ if(fileName.Length() ==0){
+ Log(Form("Error by retrieving the file %d for the halfchamberstatus",(Int_t)index));
+ delete listpad;
+ return kTRUE;
+ }
+
+ TFile *f = TFile::Open(fileName);
+ f->GetObject("calibchamberstatus",calPed);
+
+ if(calPed) {
+
+ // store as reference data
+ TString name("HalfChamberStatus");
+ if(!StoreReferenceData("DAQData",(const char *)name,(TObject *) calPed,&metaData)){
+ Log(Form("Error storing AliTRDCalibPadStatus object %d as reference data",(Int_t)index));
+ error = kTRUE;
+ }
+ } // calPed
+ else Log(Form("Error getting AliTRDCalibChamberStatus onject from file"));
+
+ } // fileNameEntry
+ ++index;
+ }// while (list)
+
+ Log(Form("%d elements found in the list for the halfchamberstatus",(Int_t)index));
+ if(index!=1){
+ delete listpad;
+ return kTRUE;
+ }
+
+ //
+ // Produce the AliTRDCalChamberStatus name calHalfChamberStatus
+ //
+ AliTRDCalChamberStatus *calHalfChamberStatus = 0x0;
+ if(calPed) {
+ //calPed->AnalyseHisto(); // check number of events, create calHalfChamberStatus (done on DAQ)
+ if(fCalDCSObjEOR) {
+ calPed->CheckEORStatus((AliTRDCalDCSv2 *)fCalDCSObjEOR);
+ }
+ calHalfChamberStatus=(AliTRDCalChamberStatus *)calPed->GetCalChamberStatus();
+ }
+
+ //
+ // Store
+ //
+
+ AliCDBMetaData md3;
+ md3.SetObjectClassName("AliTRDCalChamberStatus");
+ md3.SetResponsible("Raphaelle Bailhache");
+ md3.SetBeamPeriod(1);
+ md3.SetComment("TRD calib test");
+ if(!Store("Calib","ChamberStatus" ,(TObject *)calHalfChamberStatus, &md3, 0, kTRUE)){
+ Log("Error storing the pedestal");
+ delete listpad;
+ return kTRUE;
+ }
+
+ delete listpad;
+ return error;
+
+}
//______________________________________________________________________________________________
Bool_t AliTRDPreprocessor::ExtractPedestals()
{
if(calPed){
- Int_t ldc = 0;
-
// analyse
//calPed->AnalyseHisto();
AliTRDCalROC *rocMean = calPed->GetCalRocMean(idet, kFALSE);
if ( rocMean ) {
calPedSum.SetCalRocMean(rocMean,idet);
- ldc = (Int_t) (idet / 30);
}
AliTRDCalROC *rocRMS = calPed->GetCalRocRMS(idet, kFALSE);
if ( rocRMS ) {
}
}// det loop
- if((ldc==0) || (ldc==1) || (ldc==2)) ldc = 1;
- if((ldc==3) || (ldc==4) || (ldc==5)) ldc = 2;
- if((ldc==6) || (ldc==7) || (ldc==8)) ldc = 3;
- if((ldc==9) || (ldc==10) || (ldc==11)) ldc = 4;
- if((ldc==12) || (ldc==13) || (ldc==14)) ldc = 5;
- if((ldc==15) || (ldc==16) || (ldc==17)) ldc = 6;
-
// store as reference data
TString name("PadStatus");
- name += ldc;
+ name += index;
if(!StoreReferenceData("DAQData",(const char *)name,(TObject *) calPed,&metaData)){
Log(Form("Error storing AliTRDCalibPadStatus object %d as reference data",(Int_t)index));
error = kTRUE;
}
//__________________________________________________________________
-Bool_t AliTRDPreprocessor::AreThereDataPedestal(AliTRDCalSingleChamberStatus * const calROCStatus
+Bool_t AliTRDPreprocessor::AreThereDataPedestal(const AliTRDCalSingleChamberStatus * const calROCStatus
, Bool_t second)
{
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);
- TObject *objdriftvelocitypad = calibra->CreatePadObjectVdrift();
+ // TObject *objdriftvelocitypad = calibra->CreatePadObjectVdrift();
object = calibra->GetVectorFit2();
AliTRDCalDet *objtime0det = calibra->CreateDetObjectT0(&object,kTRUE);
- TObject *objtime0pad = calibra->CreatePadObjectT0();
+ // TObject *objtime0pad = calibra->CreatePadObjectT0();
calibra->ResetVectorFit();
// store
- if(!Store("Calib","ChamberVdrift" ,(TObject *) objdriftvelocitydet,&md1,0,kTRUE)){
- Log("Error storing the calibration object for the chamber vdrift (DAQ)");
- error = kTRUE;
- }
- if(!Store("Calib","ChamberT0" ,(TObject *) objtime0det ,&md1,0,kTRUE)){
- Log("Error storing the calibration object for the chamber t0 (DAQ)");
- error = kTRUE;
- }
- if(!Store("Calib","LocalVdrift" ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
- Log("Error storing the calibration object for the local drift velocity (DAQ)");
- error = kTRUE;
- }
- if(!Store("Calib","LocalT0" ,(TObject *) objtime0pad ,&md2,0,kTRUE)){
- Log("Error storing the calibration object for the local time0 (DAQ)");
- error = kTRUE;
- }
+ if(!Store("Calib","ChamberVdrift" ,(TObject *) objdriftvelocitydet,&md1,0,kTRUE)){
+ Log("Error storing the calibration object for the chamber vdrift (DAQ)");
+ error = kTRUE;
+ }
+ if(!Store("Calib","ChamberT0" ,(TObject *) objtime0det ,&md1,0,kTRUE)){
+ Log("Error storing the calibration object for the chamber t0 (DAQ)");
+ error = kTRUE;
+ }
+ // if(!Store("Calib","LocalVdrift" ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
+ // Log("Error storing the calibration object for the local drift velocity (DAQ)");
+ // error = kTRUE;
+ // }
+ // if(!Store("Calib","LocalT0" ,(TObject *) objtime0pad ,&md2,0,kTRUE)){
+ // Log("Error storing the calibration object for the local time0 (DAQ)");
+ // error = kTRUE;
+ // }
}
else{
Log("Not enough statistics for the average pulse height (DAQ)");
// 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();
AliTRDCalDet *objgaindet = calibra->CreateDetObjectGain(&object);
- TObject *objgainpad = calibra->CreatePadObjectGain();
+ // TObject *objgainpad = calibra->CreatePadObjectGain();
// store them
if(!Store("Calib","ChamberGainFactor",(TObject *) objgaindet ,&md1,0,kTRUE)){
Log("Error storing the calibration object for the chamber gain");
error = kTRUE;
}
- if(!Store("Calib","LocalGainFactor" ,(TObject *) objgainpad ,&md2,0,kTRUE)){
- Log("Error storing the calibration object for the local gain factor");
- error = kTRUE;
- }
+ // if(!Store("Calib","LocalGainFactor" ,(TObject *) objgainpad ,&md2,0,kTRUE)){
+ // Log("Error storing the calibration object for the local gain factor");
+ // error = kTRUE;
+ // }
}
calibra->ResetVectorFit();
}// if histogain
// 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);
- TObject *objdriftvelocitypad = calibra->CreatePadObjectVdrift();
+ // TObject *objdriftvelocitypad = calibra->CreatePadObjectVdrift();
object = calibra->GetVectorFit2();
AliTRDCalDet *objtime0det = calibra->CreateDetObjectT0(&object,kTRUE);
- TObject *objtime0pad = calibra->CreatePadObjectT0();
+ //TObject *objtime0pad = calibra->CreatePadObjectT0();
// store them
if(!Store("Calib","ChamberVdrift" ,(TObject *) objdriftvelocitydet,&md1,0,kTRUE)){
Log("Error storing the calibration object for the chamber vdrift (HLT)");
Log("Error storing the calibration object for the chamber t0 (HLT)");
error = kTRUE;
}
- if(!Store("Calib","LocalVdrift" ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
- Log("Error storing the calibration object for the local drift velocity (HLT)");
- error = kTRUE;
- }
- if(!Store("Calib","LocalT0" ,(TObject *) objtime0pad ,&md2,0,kTRUE)){
- Log("Error storing the calibration object for the local time0 (HLT)");
- error = kTRUE;
- }
+ // if(!Store("Calib","LocalVdrift" ,(TObject *) objdriftvelocitypad,&md2,0,kTRUE)){
+ // Log("Error storing the calibration object for the local drift velocity (HLT)");
+ // error = kTRUE;
+ // }
+ // if(!Store("Calib","LocalT0" ,(TObject *) objtime0pad ,&md2,0,kTRUE)){
+ // Log("Error storing the calibration object for the local time0 (HLT)");
+ // error = kTRUE;
+ // }
fVdriftHLT = kTRUE;
}
calibra->ResetVectorFit();
}// if TProfile2D
// 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);
}
calibra->ResetVectorFit();
}// if PRF
+ */
}// if fileNameEntry
delete listhlt;
//_____________________________________________________________________________
UInt_t AliTRDPreprocessor::ProcessDCSConfigData()
{
- //
// process the configuration of FEE, PTR and GTU
// reteive XML filei(s) from the DCS FXS
// parse it/them and store TObjArrays in the CDB
- //
- // return 0 for success, otherwise:
- // 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 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.");
+ if(fCalDCSObjSOR) delete fCalDCSObjSOR;
+ if(fCalDCSObjEOR) delete fCalDCSObjEOR;
+
+ TString xmlFile[2];
+ TString esor[2] = {"SOR", "EOR"};
// get the XML files
- Log("Requesting the 2 summaryfiles from the FXS..");
- TString xmlFileS = GetFile(kDCS,"CONFIGSUMMARYSOR","");
- TString xmlFileE = GetFile(kDCS,"CONFIGSUMMARYEOR","");
- // Request EOR and SOR files from the fxs, if both are not found exit
-
- Bool_t fileExistE = kTRUE, fileExistS = kTRUE;
-
- // 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 (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;
- }
+ xmlFile[0] = GetFile(kDCS,"CONFIGSUMMARYSOR","");
+ xmlFile[1] = GetFile(kDCS,"CONFIGSUMMARYEOR","");
- // test the files
- if (fileExistS) {
- Log("Checking if SOR file is valid.");
- std::ifstream fileTestS;
- fileTestS.open(xmlFileS.Data(), std::ios_base::binary | std::ios_base::in);
- if (!fileTestS.good() || fileTestS.eof() || !fileTestS.is_open()) {
- 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("Warning: File %s is empty!",xmlFileS.Data()));
- fileExistS = kFALSE;
- return 5;
- }
- }
+ // check both files
+ for (Int_t iFile=0; iFile<2; iFile++) {
- if (fileExistE) {
- Log("Checking if EOR file is valid.");
- std::ifstream fileTestE;
- fileTestE.open(xmlFileE.Data(), std::ios_base::binary | std::ios_base::in);
- if (!fileTestE.good() || fileTestE.eof() || !fileTestE.is_open()) {
- Log(Form("Warning: File %s not valid!",xmlFileE.Data()));
- fileExistE = kFALSE;
+ // check if the file are there
+ if (xmlFile[iFile].IsNull()) {
+ Log(Form("Warning: %s file not found!", esor[iFile].Data()));
+ continue;
}
- Log("Checking if EOR file is not empty.");
- fileTestE.seekg(0, std::ios_base::end);
- if (static_cast<int>(fileTestE.tellg()) < 2) {
- Log(Form("Warning: File %s is empty!",xmlFileE.Data()));
- fileExistE = kFALSE;
+ Log(Form("%s file found: %s", esor[iFile].Data(), xmlFile[iFile].Data()));
+
+ // test the file
+ std::ifstream fileTest;
+ fileTest.open(xmlFile[iFile].Data(), std::ios_base::binary | std::ios_base::in);
+ if (!fileTest.good() || fileTest.eof() || !fileTest.is_open()) {
+ Log(Form("Warning: %s file not valid!", esor[iFile].Data()));
+ continue;
+ }
+ // check if the file is empty
+ fileTest.seekg(0, std::ios_base::end);
+ if (static_cast<int>(fileTest.tellg()) < 2) {
+ Log(Form("Warning: %s file empty!", esor[iFile].Data()));
+ continue;
}
- }
+ Log(Form("%s file is valid.", esor[iFile].Data()));
- if (fileExistS==0 && fileExistE==0) {
- Log("ERROR: Both files (SOR/EOR) are not valid!");
- return 8;
- }
+ // make a robust XML validation
+ TSAXParser testParser;
+ if (testParser.ParseFile(xmlFile[iFile].Data()) < 0 ) {
+ Log(Form("Warning: %s XML content is not well-formed!", esor[iFile].Data()));
+ continue;
+ }
+ Log(Form("%s XML content is well-formed.", esor[iFile].Data()));
- Log("One or both of the tested files are valid.");
+ // create parser and parse
+ TSAXParser saxParser;
+ AliTRDSaxHandler saxHandler;
+ saxParser.ConnectToHandler("AliTRDSaxHandler", &saxHandler);
+ saxParser.ParseFile(xmlFile[iFile].Data());
- // make a robust XML validation
- TSAXParser testParser;
- if (fileExistS && testParser.ParseFile(xmlFileS.Data()) < 0 ) {
- Log("ERROR: XML content (SOR) is not well-formed.");
- return 10;
- } else if (fileExistE && testParser.ParseFile(xmlFileE.Data()) < 0 ) {
- Log("ERROR: XML content (EOR) is not well-formed.");
- return 11;
- }
- Log("XML contents are well-formed.");
-
- // create parser and parse
- TSAXParser saxParserS, saxParserE;
- AliTRDSaxHandler saxHandlerS, saxHandlerE;
- if (fileExistS) {
- saxParserS.ConnectToHandler("AliTRDSaxHandler", &saxHandlerS);
- saxParserS.ParseFile(xmlFileS.Data());
- }
- if (fileExistE) {
- saxParserE.ConnectToHandler("AliTRDSaxHandler", &saxHandlerE);
- saxParserE.ParseFile(xmlFileE.Data());
- }
- // 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 (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;
+ // report errors of the parser if present
+ if (saxParser.GetParseCode() != 0) {
+ Log(Form("Warning: %s XML file validation failed! Parse code: %d", esor[iFile].Data(), saxParser.GetParseCode()));
+ continue;
+ }
+ Log(Form("%s XML validation OK.", esor[iFile].Data()));
+
+ // report errors of the handler if present
+ if (saxHandler.GetHandlerStatus() != 0) {
+ Log(Form("Warning: Creating %s calibration object failed! Error code: %d", esor[iFile].Data(), saxHandler.GetHandlerStatus()));
+ continue;
+ }
+ Log(Form("%s SAX handler reports no errors.", esor[iFile].Data()));
+
+ // get the calibration object storing the data from the handler
+ AliTRDCalDCSv2 *calDCSObj = (AliTRDCalDCSv2*)saxHandler.GetCalDCSObj()->Clone();
+ calDCSObj->EvaluateGlobalParameters();
+ calDCSObj->SetRunType(GetRunType());
+ calDCSObj->SetStartTime(GetStartTimeDCSQuery());
+ calDCSObj->SetEndTime(GetEndTimeDCSQuery());
+ if (iFile == 0) fCalDCSObjSOR = calDCSObj;
+ if (iFile == 1) fCalDCSObjEOR = calDCSObj;
}
- Log("SAX handler reports no errors.");
+
+ if (!fCalDCSObjSOR && !fCalDCSObjEOR) { Log("ERROR: Failed reading both files!"); return 1; }
// put both objects in one TObjArray to store them
- TObjArray* fCalObjArray = new TObjArray(2);
- fCalObjArray->SetOwner();
-
- // get the calibration object storing the data from the handler
- if (fileExistS) {
- AliTRDCalDCS* fCalDCSObjSOR = saxHandlerS.GetCalDCSObj();
- fCalDCSObjSOR->EvaluateGlobalParameters();
- fCalDCSObjSOR->SetRunType(GetRunType());
- fCalDCSObjSOR->SetStartTime(GetStartTimeDCSQuery());
- fCalDCSObjSOR->SetEndTime(GetEndTimeDCSQuery());
- fCalObjArray->AddAt(fCalDCSObjSOR,0);
+ TObjArray* calObjArray = new TObjArray(2);
+ calObjArray->SetOwner();
+
+ if (fCalDCSObjSOR) {
+ calObjArray->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);
+ if (fCalDCSObjEOR) {
+ calObjArray->AddAt(fCalDCSObjEOR,1);
Log("TRDCalDCS object for EOR created.");
}
AliCDBMetaData metaData1;
metaData1.SetBeamPeriod(0);
metaData1.SetResponsible("Frederick Kramer");
- 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 16;
- } else {
- Log("DCS config data object stored.");
- }
+ metaData1.SetComment("DCS configuration data in two AliTRDCalDCSv2 objects in one TObjArray (0:SOR, 1:EOR).");
+ if (!Store("Calib", "DCS", calObjArray, &metaData1, 0, kTRUE)) { Log("ERROR: Storing DCS config data object failed!"); return 1; }
- //delete fCalObjArray;
+ delete calObjArray;
Log("SUCCESS: Processing of the DCS config summary file DONE.");
return 0;
}
+