// Read pedestal file from file exchage server
// Keep original entry from OCDB in case no new pedestals are available
//
- AliTPCCalPad *calPadPed=0;
+ AliTPCCalPad *calPadPedOCDB=0;
AliCDBEntry* entry = GetFromOCDB("Calib", "Pedestals");
- if (entry) calPadPed = (AliTPCCalPad*)entry->GetObject();
- if ( calPadPed==NULL ) {
+ if (entry) calPadPedOCDB = (AliTPCCalPad*)entry->GetObject();
+ if ( calPadPedOCDB==NULL ) {
Log("AliTPCPreprocsessor: No previous TPC pedestal entry available.\n");
- calPadPed = new AliTPCCalPad("PedestalsMean","PedestalsMean");
}
- AliTPCCalPad *calPadRMS=0;
+ AliTPCCalPad *calPadRMSOCDB=0;
entry = GetFromOCDB("Calib", "PadNoise");
- if (entry) calPadRMS = (AliTPCCalPad*)entry->GetObject();
- if ( calPadRMS==NULL ) {
+ if (entry) calPadRMSOCDB = (AliTPCCalPad*)entry->GetObject();
+ if ( calPadRMSOCDB==NULL ) {
Log("AliTPCPreprocsessor: No previous TPC noise entry available.\n");
- calPadRMS = new AliTPCCalPad("PedestalsRMS","PedestalsRMS");
}
+ AliTPCCalPad* calPadPed = new AliTPCCalPad("PedestalsMean","PedestalsMean");
+ AliTPCCalPad* calPadRMS = new AliTPCCalPad("PedestalsRMS","PedestalsRMS");
+
UInt_t result=0;
Int_t nSectors = fROC->GetNSectors();
+ TVectorD foundSectorsPed(nSectors);
+ foundSectorsPed=0;
+ TVectorD foundSectorsRMS(nSectors);
+ foundSectorsRMS=0;
+
TList* list = GetFileSources(sourceFXS,"pedestals");
if (list && list->GetEntries()>0) {
changed=true;
for (Int_t sector=0; sector<nSectors; sector++) {
AliTPCCalROC *rocPed=calPed->GetCalRocPedestal(sector, kFALSE);
- if ( rocPed ) calPadPed->SetCalROC(rocPed,sector);
+ if ( rocPed ) {
+ AliTPCCalROC* roc=calPadPed->GetCalROC(sector);
+ roc->Add(rocPed,1);
+ foundSectorsPed[sector]++;
+ }
AliTPCCalROC *rocRMS=calPed->GetCalRocRMS(sector, kFALSE);
- if ( rocRMS ) calPadRMS->SetCalROC(rocRMS,sector);
+ if ( rocRMS ) {
+ AliTPCCalROC* roc=calPadRMS->GetCalROC(sector);
+ roc->Add(rocRMS,1);
+ foundSectorsRMS[sector]++;
+ }
}
delete calPed;
f->Close();
}
++index;
} // while(list)
+
+//
+// Check if calibration is complete -- otherwise take from old OCDB entry
+
+// inner sectors
+ for (Int_t sector=0; sector<nSectors/2; sector++) {
+ if (foundSectorsPed[sector] < 1 ) {
+ if (calPadPedOCDB) {
+ AliTPCCalROC *rocOCDB=calPadPedOCDB->GetCalROC(sector);
+ calPadPed->SetCalROC(rocOCDB,sector);
+ } else {
+ const int mess_length=100;
+ char message[mess_length];
+ snprintf(message,mess_length,"Missing pedestals for sector %d - also not available from previous OCDB entry.\n",
+ sector);
+ Log (message);
+ result = 2;
+ }
+ }
+ if (foundSectorsRMS[sector] < 1 ) {
+ if (calPadRMSOCDB) {
+ AliTPCCalROC *rocOCDB=calPadRMSOCDB->GetCalROC(sector);
+ calPadRMS->SetCalROC(rocOCDB,sector);
+ } else {
+ const int mess_length=100;
+ char message[mess_length];
+ snprintf(message,mess_length,"Missing pedestal RMS for sector %d - also not available from previous OCDB entry.\n",
+ sector);
+ Log (message);
+ result = 2;
+ }
+ }
+ }
+
+// outer sectors -- two updates needed
+
+ for (Int_t sector=nSectors/2; sector<nSectors; sector++) {
+ if (foundSectorsPed[sector] < 2 ) {
+ if (calPadPedOCDB) {
+ AliTPCCalROC *rocOCDB=calPadPedOCDB->GetCalROC(sector);
+ calPadPed->SetCalROC(rocOCDB,sector);
+ } else {
+ const int mess_length=100;
+ char message[mess_length];
+ snprintf(message,mess_length,"Missing pedestals for sector %d - also not available from previous OCDB entry.\n",
+ sector);
+ Log (message);
+ result = 2;
+ }
+
+ }
+ if (foundSectorsRMS[sector] < 2 ) {
+ if (calPadRMSOCDB) {
+ AliTPCCalROC *rocOCDB=calPadRMSOCDB->GetCalROC(sector);
+ calPadRMS->SetCalROC(rocOCDB,sector);
+ } else {
+ const int mess_length=100;
+ char message[mess_length];
+ snprintf(message,mess_length,"Missing pedestal RMS for sector %d - also not available from previous OCDB entry.\n",
+ sector);
+ Log (message);
+ result = 2;
+ }
+
+ }
+ }
+
+
//
// Store updated pedestal entry to OCDB
//
delete calPadPed;
delete calPadRMS;
+ delete calPadPedOCDB;
+ delete calPadRMSOCDB;
return result;
}
// Read pulser calibration file from file exchage server
// Keep original entry from OCDB in case no new pulser calibration is available
//
- TObjArray *pulserObjects=0;
- AliTPCCalPad *pulserTmean=0;
- AliTPCCalPad *pulserTrms=0;
- AliTPCCalPad *pulserQmean=0;
+
+ TObjArray *pulserObjects = new TObjArray;
+ TObjArray *pulserObjectsOCDB=0;
+
AliCDBEntry* entry = GetFromOCDB("Calib", "Pulser");
- if (entry) pulserObjects = (TObjArray*)entry->GetObject();
- if ( pulserObjects==NULL ) {
+ if (entry) pulserObjectsOCDB = (TObjArray*)entry->GetObject();
+ if ( pulserObjectsOCDB==NULL ) {
Log("AliTPCPreprocsessor: No previous TPC pulser entry available.\n");
- pulserObjects = new TObjArray;
}
- pulserTmean = (AliTPCCalPad*)pulserObjects->FindObject("PulserTmean");
- if ( !pulserTmean ) {
- pulserTmean = new AliTPCCalPad("PulserTmean","PulserTmean");
- pulserObjects->Add(pulserTmean);
- }
- pulserTrms = (AliTPCCalPad*)pulserObjects->FindObject("PulserTrms");
- if ( !pulserTrms ) {
- pulserTrms = new AliTPCCalPad("PulserTrms","PulserTrms");
- pulserObjects->Add(pulserTrms);
- }
- pulserQmean = (AliTPCCalPad*)pulserObjects->FindObject("PulserQmean");
- if ( !pulserQmean ) {
- pulserQmean = new AliTPCCalPad("PulserQmean","PulserQmean");
- pulserObjects->Add(pulserQmean);
- }
+ AliTPCCalPad *pulserTmean = new AliTPCCalPad("PulserTmean","PulserTmean");
+ pulserObjects->Add(pulserTmean);
+
+ AliTPCCalPad *pulserTrms = new AliTPCCalPad("PulserTrms","PulserTrms");
+ pulserObjects->Add(pulserTrms);
+
+ AliTPCCalPad *pulserQmean = new AliTPCCalPad("PulserQmean","PulserQmean");
+ pulserObjects->Add(pulserQmean);
+
UInt_t result=0;
Int_t nSectors = fROC->GetNSectors();
+ TVectorD foundTmean(nSectors);
+ foundTmean=0;
+ TVectorD foundTrms(nSectors);
+ foundTrms=0;
+ TVectorD foundQmean(nSectors);
+ foundQmean=0;
+
+
TList* list = GetFileSources(sourceFXS,"pulser");
if (list && list->GetEntries()>0) {
changed=true;
for (Int_t sector=0; sector<nSectors; sector++) {
AliTPCCalROC *rocTmean=calPulser->GetCalRocT0(sector);
- if ( rocTmean ) pulserTmean->SetCalROC(rocTmean,sector);
+ if ( rocTmean ) {
+ AliTPCCalROC* roc=pulserTmean->GetCalROC(sector);
+ roc->Add(rocTmean,1);
+ foundTmean[sector]++;
+ }
AliTPCCalROC *rocTrms=calPulser->GetCalRocRMS(sector);
- if ( rocTrms ) pulserTrms->SetCalROC(rocTrms,sector);
+ if ( rocTrms ) {
+ AliTPCCalROC* roc=pulserTrms->GetCalROC(sector);
+ roc->Add(rocTrms,1);
+ foundTrms[sector]++;
+ }
AliTPCCalROC *rocQmean=calPulser->GetCalRocQ(sector);
- if ( rocQmean ) pulserQmean->SetCalROC(rocQmean,sector);
+ if ( rocQmean ) {
+ AliTPCCalROC* roc=pulserQmean->GetCalROC(sector);
+ roc->Add(rocQmean,1);
+ foundQmean[sector]++;
+ }
}
delete calPulser;
f->Close();
}
++index;
} // while(list)
+
+
+
+
+if (pulserObjectsOCDB) {
+ AliTPCCalPad* pulserTmeanOCDB = (AliTPCCalPad*)pulserObjectsOCDB->FindObject("PulserTmean");
+ AliTPCCalPad* pulserTrmsOCDB = (AliTPCCalPad*)pulserObjectsOCDB->FindObject("PulserTrms");
+ AliTPCCalPad* pulserQmeanOCDB = (AliTPCCalPad*)pulserObjectsOCDB->FindObject("PulserQmean");
+
+//
+// Check if calibration is complete -- otherwise take from old OCDB entry
+
+// inner sectors
+ for (Int_t sector=0; sector<nSectors/2; sector++) {
+ if (foundTmean[sector] < 1 ) {
+ if (pulserTmeanOCDB) {
+ AliTPCCalROC* rocOCDB = pulserTmeanOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserTmean->SetCalROC(rocOCDB,sector);
+ }
+ }
+ if (foundTrms[sector] < 1 ) {
+ if (pulserTrmsOCDB) {
+ AliTPCCalROC* rocOCDB = pulserTrmsOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserTrms->SetCalROC(rocOCDB,sector);
+ }
+ }
+ if (foundQmean[sector] < 1 ) {
+ if (pulserQmeanOCDB) {
+ AliTPCCalROC* rocOCDB = pulserQmeanOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserQmean->SetCalROC(rocOCDB,sector);
+ }
+ }
+ }
+
+// outer sectors -- two updates needed
+
+ for (Int_t sector=0; sector<nSectors/2; sector++) {
+ if (foundTmean[sector] < 2 ) {
+ if (pulserTmeanOCDB) {
+ AliTPCCalROC* rocOCDB = pulserTmeanOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserTmean->SetCalROC(rocOCDB,sector);
+ }
+ }
+ if (foundTrms[sector] < 2 ) {
+ if (pulserTrmsOCDB) {
+ AliTPCCalROC* rocOCDB = pulserTrmsOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserTrms->SetCalROC(rocOCDB,sector);
+ }
+ }
+ if (foundQmean[sector] < 2 ) {
+ if (pulserQmeanOCDB) {
+ AliTPCCalROC* rocOCDB = pulserQmeanOCDB->GetCalROC(sector);
+ if ( rocOCDB ) pulserQmean->SetCalROC(rocOCDB,sector);
+ }
+ }
+
+ }
+}
+
//
// Store updated pedestal entry to OCDB
//
}
pulserObjects->Delete();
delete pulserObjects;
+ if (pulserObjectsOCDB) pulserObjectsOCDB->Delete();
+ delete pulserObjectsOCDB;
return result;
}
if (list && list->GetEntries()>0) {
-// only one QA objetc should be available!
+// only one QA object should be available!
AliTPCdataQA *calQA;
// extract list of active DDLs
+ if (dcsMap) {
Bool_t found;
TString arrDDL(kNumDDL);
arrDDL.Append('x',kNumDDL);
activeDDL->Add(key,ddlArray);
altroObjects->Add(activeDDL);
changed=true;
-
+ } else {
+ Log ("ExtractAltro: No DCS map available. Active DDL list cannot be obtained.");
+ result = 3;
+ }
// extract Altro configuration files