#include "AliHLTTPCNoiseMapComponent.h"
#include "AliHLTTPCDigitReaderDecoder.h"
-//#include "AliHLTTPCDigitReaderPacked.h"
#include "AliHLTTPCTransform.h"
#include "AliHLTTPCDefinitions.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
#include "AliHLTTPCNoiseMap.h"
#include "AliTPCCalPad.h"
#include "TObjString.h"
#include <sys/time.h>
#include "TH2.h"
+#include "TH3.h"
ClassImp(AliHLTTPCNoiseMapComponent) //ROOT macro for the implementation of ROOT specific class methods
AliHLTTPCNoiseMapComponent::AliHLTTPCNoiseMapComponent()
:
fSpecification(0),
- fPlotSideA(0),
- fPlotSideC(0),
- fApplyNoiseMap(0),
+ fReadNoiseMap(0),
fResetHistograms(0),
- fIsPacked(0),
- fIsUnpacked(0),
- fCurrentSlice(-99),
- fCurrentPartition(-99),
+ fInitHist(kTRUE),
fCurrentRow(-99),
fHistSignal(NULL),
- fHistMaxSignal(NULL),
- fHistTotSignal(NULL),
- fHistPadRMS(NULL),
- fHistCDBMap(NULL),
- fHistSideA(NULL),
- fHistSideC(NULL)
+ fHistSideAMaxSignal(NULL),
+ fHistSideATotSignal(NULL),
+ fHistSideAPadRMS(NULL),
+ fHistSideCMaxSignal(NULL),
+ fHistSideCTotSignal(NULL),
+ fHistSideCPadRMS(NULL),
+ fHistCDBMap(NULL)
{
// see header file for class documentation
// or
int AliHLTTPCNoiseMapComponent::DoInit( int argc, const char** argv ) {
// see header file for class documentation
- Int_t i = 0;
- Char_t* cpErr;
+ //Int_t i = 0;
+ //Char_t* cpErr;
int iResult=0;
if (!configuration.IsNull()) {
iResult=Configure(configuration.Data());
} else {
- iResult=Reconfigure(NULL, NULL);
+ // iResult=Reconfigure(NULL, NULL);
}
- while ( i < argc ) {
- if (!strcmp( argv[i], "-apply-noisemap")) {
- fApplyNoiseMap = strtoul( argv[i+1], &cpErr ,0);
-
- if ( *cpErr ) {
- HLTError("Cannot convert apply-noisemap specifier '%s'.", argv[i+1]);
- return EINVAL;
- }
- i+=2;
- continue;
- }
-
- if (!strcmp( argv[i], "-plot-side-a")) {
- fPlotSideA = strtoul( argv[i+1], &cpErr ,0);
-
- if ( *cpErr ) {
- HLTError("Cannot convert plot-side-a specifier '%s'.", argv[i+1]);
- return EINVAL;
- }
- i+=2;
- continue;
- }
-
- if (!strcmp( argv[i], "-plot-side-c")) {
- fPlotSideC = strtoul( argv[i+1], &cpErr ,0);
-
- if ( *cpErr ) {
- HLTError("Cannot convert plot-side-c specifier '%s'.", argv[i+1]);
- return EINVAL;
- }
- i+=2;
- continue;
- }
-
- if (!strcmp( argv[i], "-reset-histograms")) {
- fResetHistograms = strtoul( argv[i+1], &cpErr ,0);
-
- if ( *cpErr ) {
- HLTError("Cannot convert reset-histograms specifier '%s'.", argv[i+1]);
- return EINVAL;
- }
- i+=2;
- continue;
- }
-
- Logging(kHLTLogError, "HLT::TPCNoiseMap::DoInit", "Unknown Option", "Unknown option '%s'", argv[i] );
- return EINVAL;
-
- } // end while
+// while ( i < argc ) {
+// if (!strcmp( argv[i], "-read-noisemap")) {
+// fApplyNoiseMap = strtoul( argv[i+1], &cpErr ,0);
+//
+// if ( *cpErr ) {
+// HLTError("Cannot convert apply-noisemap specifier '%s'.", argv[i+1]);
+// return EINVAL;
+// }
+// i+=2;
+// continue;
+// }
+//
+// if (!strcmp( argv[i], "-reset-histograms")) {
+// fResetHistograms = strtoul( argv[i+1], &cpErr ,0);
+//
+// if ( *cpErr ) {
+// HLTError("Cannot convert reset-histograms specifier '%s'.", argv[i+1]);
+// return EINVAL;
+// }
+// i+=2;
+// continue;
+// }
+//
+// Logging(kHLTLogError, "HLT::TPCNoiseMap::DoInit", "Unknown Option", "Unknown option '%s'", argv[i] );
+// return EINVAL;
+//
+// } // end while
- if(fApplyNoiseMap){
+ if(fReadNoiseMap){
AliHLTTPCNoiseMap *nm = AliHLTTPCNoiseMap::Instance();
- AliTPCCalPad *noisePad = nm->ReadNoiseMap();
- fHistCDBMap = noisePad->MakeHisto2D(1);
+ if(!nm) {
+ HLTWarning("AliHLTTPCNoiseMap instance not existent.");
+ }
+ else {
+ AliTPCCalPad *noisePad = nm->ReadNoiseMap(GetRunNo());
+ if(noisePad) {
+ fHistCDBMap = noisePad->MakeHisto2D(1);
+
+ }
+ }
}
// if(fApplyNoiseMap){
// //fHistCDBMap = noisePad->MakeHisto2D(1); //side C
// }
-
// HLTDebug("using AliHLTTPCDigitReaderDecoder");
// pDigitReader = new AliHLTTPCDigitReaderDecoder(); // double-loop
// pDigitReader = new AliHLTTPCDigitReaderPacked();
} // end DoInit()
int AliHLTTPCNoiseMapComponent::DoDeinit() {
-// see header file for class documentation
- return 0;
+ // see header file for class documentation
+
+ if(fHistSideAMaxSignal) delete fHistSideAMaxSignal; fHistSideAMaxSignal = NULL;
+ if(fHistSideATotSignal) delete fHistSideATotSignal; fHistSideATotSignal = NULL;
+ if(fHistSideAPadRMS) delete fHistSideAPadRMS; fHistSideAPadRMS = NULL;
+
+ if(fHistSideCMaxSignal) delete fHistSideCMaxSignal; fHistSideCMaxSignal = NULL;
+ if(fHistSideCTotSignal) delete fHistSideCTotSignal; fHistSideCTotSignal = NULL;
+ if(fHistSideCPadRMS) delete fHistSideCPadRMS; fHistSideCPadRMS = NULL;
+
+ return 0;
}
-int AliHLTTPCNoiseMapComponent::DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& /*trigData*/){
-// see header file for class documentation
+void AliHLTTPCNoiseMapComponent::InitializeHistograms(UInt_t minSlice, UInt_t maxSlice, UInt_t minPartition, UInt_t maxPartition){
+ // see header file for class documentation
+
+ Char_t name1[50], name2[50], name3[50];
+
+ if(minSlice<18){
+ sprintf(name1, "fHistSideAMaxSignal_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ sprintf(name2, "fHistSideATotSignal_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ sprintf(name3, "fHistSideAPadRMS_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ fHistSideAMaxSignal = new TH2F(name1,name1,250,-250,250,250,-250,250);
+ fHistSideATotSignal = new TH2F(name2,name2,250,-250,250,250,-250,250);
+ fHistSideAPadRMS = new TH2F(name3,name3,250,-250,250,250,-250,250);
+ fHistSideAMaxSignal->SetXTitle("x [cm]");
+ fHistSideATotSignal->SetXTitle("x [cm]");
+ fHistSideAPadRMS->SetXTitle("x [cm]");
+ fHistSideAMaxSignal->SetYTitle("y [cm]");
+ fHistSideATotSignal->SetYTitle("y [cm]");
+ fHistSideAPadRMS->SetYTitle("y [cm]");
+
+ } else {
+ sprintf(name1, "fHistSideCMaxSignal_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ sprintf(name2, "fHistSideCTotSignal_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ sprintf(name3, "fHistSideCPadRMS_Slice_%.2d%.2d_Partition_%.2d%.2d", minSlice, maxSlice, minPartition, maxPartition);
+ fHistSideCMaxSignal = new TH2F(name1,name1,250,-250,250,250,-250,250);
+ fHistSideCTotSignal = new TH2F(name2,name2,250,-250,250,250,-250,250);
+ fHistSideCPadRMS = new TH2F(name3,name3,250,-250,250,250,-250,250);
+ fHistSideCMaxSignal->SetXTitle("x [cm]");
+ fHistSideCTotSignal->SetXTitle("x [cm]");
+ fHistSideCPadRMS->SetXTitle("x [cm]");
+ fHistSideCMaxSignal->SetYTitle("y [cm]");
+ fHistSideCTotSignal->SetYTitle("y [cm]");
+ fHistSideCPadRMS->SetYTitle("y [cm]");
+}
+
+ fInitHist=kFALSE;
+
+}
+
+int AliHLTTPCNoiseMapComponent::DoEvent(const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/){
+ // see header file for class documentation
- HLTInfo("--- Entering DoEvent() in TPCNoiseMap ---");
if(GetFirstInputBlock( kAliHLTDataTypeSOR ) || GetFirstInputBlock( kAliHLTDataTypeEOR )) return 0;
-
- if(fPlotSideA){
- fHistSideA = new TH2F("fHistSideA","TPC Side A",250,-250,250,250,-250,250);
- fHistSideA->SetXTitle("global X (cm)"); fHistSideA->SetYTitle("global Y (cm)");
- }
-
- if(fPlotSideC){
- fHistSideC = new TH2F("fHistSideC","TPC Side C",250,-250,250,250,-250,250);
- fHistSideC->SetXTitle("global X (cm)"); fHistSideC->SetYTitle("global Y (cm)");
- }
-
+ //HLTInfo("--- Entering DoEvent() in TPCNoiseMap ---");
+
const AliHLTComponentBlockData *iter = NULL;
Float_t xyz[3];
Int_t thissector, thisrow;
+
+ /*if(fInitHist==kFALSE) {
+ fHistSideAMaxSignal->Reset();
+ fHistSideCMaxSignal->Reset();
+ }*/
- fHistMaxSignal = new TH2F("fHistMaxSignal","maximum signal", 250,-250,250,250,-250,250);
- fHistTotSignal = new TH2F("fHistTotSignal","total signal", 250,-250,250,250,-250,250);
- fHistPadRMS = new TH2F("fHistPadRMS", "RMS", 250,-250,250,250,-250,250);
for(iter = GetFirstInputBlock(kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTPC); iter != NULL; iter = GetNextInputBlock()){
- HLTInfo("Event 0x%08LX (%Lu) received datatype: %s - required datatype: %s",
- evtData.fEventID, evtData.fEventID,
- DataType2Text(iter->fDataType).c_str(),
- DataType2Text(kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC).c_str());
-
- if (iter->fDataType == AliHLTTPCDefinitions::fgkDDLPackedRawDataType && GetEventCount()<2){
- HLTWarning("data type %s is depricated, use %s (kAliHLTDataTypeDDLRaw)!",
- DataType2Text(AliHLTTPCDefinitions::fgkDDLPackedRawDataType).c_str(),
- DataType2Text(kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC).c_str());
- }
+// HLTInfo("Event 0x%08LX (%Lu) received datatype: %s - required datatype: %s",
+// evtData.fEventID, evtData.fEventID,
+// DataType2Text(iter->fDataType).c_str(),
+// DataType2Text(kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC).c_str());
+//
+// if (iter->fDataType == AliHLTTPCDefinitions::fgkDDLPackedRawDataType && GetEventCount()<2){
+// HLTWarning("data type %s is depricated, use %s (kAliHLTDataTypeDDLRaw)!",
+// DataType2Text(AliHLTTPCDefinitions::fgkDDLPackedRawDataType).c_str(),
+// DataType2Text(kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC).c_str());
+// }
- if (iter->fDataType != (kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC)) continue;
+ if (iter->fDataType != (kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC)) continue;
- UInt_t slice = AliHLTTPCDefinitions::GetMinSliceNr(*iter);
- UInt_t partition = AliHLTTPCDefinitions::GetMinPatchNr(*iter);
-
- fSpecification = iter->fSpecification;
+ UInt_t minSlice = AliHLTTPCDefinitions::GetMinSliceNr(*iter);
+ UInt_t minPartition = AliHLTTPCDefinitions::GetMinPatchNr(*iter);
+ UInt_t maxSlice = AliHLTTPCDefinitions::GetMaxSliceNr(*iter);
+ UInt_t maxPartition = AliHLTTPCDefinitions::GetMaxPatchNr(*iter);
+
+ if(fInitHist==kTRUE) InitializeHistograms(minSlice, maxSlice, minPartition, maxPartition);
+ fSpecification = iter->fSpecification;
- AliHLTTPCDigitReader *pDigitReader = new AliHLTTPCDigitReaderDecoder;
+ AliHLTTPCDigitReader *pDigitReader = new AliHLTTPCDigitReaderDecoder;
- pDigitReader->InitBlock(iter->fPtr,iter->fSize,partition,slice);
- if(!pDigitReader) break;
-
- //sprintf(name,"hMaxSignal_slice%d_partition%d", slice, partition);
- //fHistMaxSignal = new TH2F(name,name,250,-250,250,250,-250,250);
-
- while(pDigitReader->Next()){
- //while( pDigitReader->NextChannel()) { // pad loop
+ pDigitReader->InitBlock(iter->fPtr,iter->fSize,minPartition,minSlice);
+ if(!pDigitReader) break;
+
+ // while(pDigitReader->Next()){
+
+ Float_t maxSignal = 0.;
+ Float_t totalSignal = 0.;
+ Float_t squaredSignal = 0.;
+ Float_t rms = 0.;
+
+ while(pDigitReader->NextChannel()) { // pad loop
fCurrentRow = pDigitReader->GetRow();
- fCurrentRow += pDigitReader->GetRowOffset();
+ fCurrentRow += pDigitReader->GetRowOffset();
- AliHLTTPCTransform::Slice2Sector(slice,fCurrentRow,thissector,thisrow);
+ AliHLTTPCTransform::Slice2Sector(minSlice,fCurrentRow,thissector,thisrow);
AliHLTTPCTransform::Raw2Local(xyz,thissector,thisrow,pDigitReader->GetPad(),0);
+
+ if(minSlice>17) xyz[1] = (-1.0)*xyz[1];
- if(slice>17) xyz[1] = (-1.0)*xyz[1];
- else continue;
-
- AliHLTTPCTransform::Local2Global(xyz,slice);
+ AliHLTTPCTransform::Local2Global(xyz,minSlice);
// temporarily the transformation Raw2Global will be broken down to 2 steps,
// as there is a correction necessary at the y coordinate of the local xyz.
// transformation from pad-row coordinates to global ones
// time info is not taken into account
-// AliTPCCalROC *calRoc = noisePad->GetCalROC(thissector);
-// calRoc->GetValue(thisrow,pDigitReader->GetPad());
+ // AliTPCCalROC *calRoc = noisePad->GetCalROC(thissector);
+ // calRoc->GetValue(thisrow,pDigitReader->GetPad());
- //while( pDigitReader->NextBunch()) {
+ while(pDigitReader->NextBunch()) {
- const UInt_t *bunchData = pDigitReader->GetSignals();
- Float_t maxSignal = 0.;
- Float_t totalSignal = 0.;
-
- fHistSignal = new TH1F("fHistSignal", "signal distribution per pad",1024,0,1024);
-
- for(Int_t i=0;i<pDigitReader->GetBunchSize();i++){
+ const UInt_t *bunchData = pDigitReader->GetSignals();
+ //Int_t time = pDigitReader->GetTime();
+
+ for(Int_t i=0;i<pDigitReader->GetBunchSize();i++){
if((Float_t)(bunchData[i])>maxSignal){ maxSignal = (Float_t)(bunchData[i]); }
- totalSignal += bunchData[i];
- fHistSignal->Fill(bunchData[i]);
- } // end for loop over bunches
-
- //} // end of inner while loop
-
- fHistMaxSignal->Fill(xyz[0],xyz[1],maxSignal);
- fHistTotSignal->Fill(xyz[0],xyz[1],totalSignal);
- fHistPadRMS->Fill(xyz[0],xyz[1],fHistSignal->GetRMS());
- delete fHistSignal;
-
+ totalSignal += (Float_t)bunchData[i];
+ squaredSignal += (Float_t)bunchData[i]*(Float_t)bunchData[i];
+ //fHistSignal->Fill(time+i, bunchData[i]);
+ } // end for loop
+
+ rms = TMath::Sqrt(squaredSignal/pDigitReader->GetBunchSize());
+
+ } // end of inner while loop
+
+
+ if(minSlice<18){
+ if(maxSignal>0) fHistSideAMaxSignal->Fill(xyz[0],xyz[1],maxSignal);
+ if(totalSignal>0) fHistSideATotSignal->Fill(xyz[0],xyz[1],totalSignal);
+ if(rms>0) fHistSideAPadRMS->Fill(xyz[0],xyz[1],rms);
+ } else if(minSlice>17){
+ if(maxSignal>0) fHistSideCMaxSignal->Fill(xyz[0],xyz[1],maxSignal);
+ if(totalSignal>0) fHistSideCTotSignal->Fill(xyz[0],xyz[1],totalSignal);
+ if(rms>0) fHistSideCPadRMS->Fill(xyz[0],xyz[1],rms);
+ } else continue;
- if(fPlotSideA || fPlotSideC){
- if(slice<18) fHistSideA->Fill(xyz[0],xyz[1],maxSignal);
- else fHistSideC->Fill(xyz[0],xyz[1],maxSignal);
- } // end if plotting sides
- } // end of while loop over pads
- delete pDigitReader;
+ maxSignal = 0.;
+ totalSignal = 0.;
+ squaredSignal = 0.;
+ rms = 0.;
+ } // end of while loop over pads
+
+ pDigitReader->Reset();
+ delete pDigitReader;
} // end of for loop over data blocks
-
- if(fResetHistograms) ResetHistograms();
+
+ //HLTImportant("fHistSideAMaxSignal entries at the end of event: %d", fHistSideAMaxSignal->GetEntries());
+
+ if(fResetHistograms) ResetHistograms(); fResetHistograms = kFALSE;
MakeHistosPublic();
-
+
return 0;
} // end DoEvent()
void AliHLTTPCNoiseMapComponent::MakeHistosPublic() {
// see header file for class documentation
-
+
// TFile *outputfile = new TFile("test.root","RECREATE");
-// fHistSideC->Write();
-// fHistPartition->Write();
-// fHistCDBMap->Write();
+// fHistSignal->Write();
// outputfile->Save();
// outputfile->Close();
TObjArray histos;
- histos.Add(fHistMaxSignal);
- histos.Add(fHistTotSignal);
- histos.Add(fHistPadRMS);
+ histos.Add(fHistSideAMaxSignal);
+ histos.Add(fHistSideATotSignal);
+ histos.Add(fHistSideAPadRMS);
+
+ histos.Add(fHistSideCMaxSignal);
+ histos.Add(fHistSideCTotSignal);
+ histos.Add(fHistSideCPadRMS);
+
histos.Add(fHistCDBMap);
- if(fPlotSideA) histos.Add(fHistSideA);
- if(fPlotSideC) histos.Add(fHistSideC);
+ //histos.Add(fHistSignal);
TIter iterator(&histos);
while(TObject *pObj=iterator.Next()){ PushBack(pObj, kAliHLTDataTypeHistogram|kAliHLTDataOriginTPC, fSpecification); }
//PushBack( (TObject*) &histos, kAliHLTDataTypeHistogram, fSpecification);
-
- if(fHistSignal) delete fHistSignal; fHistSignal = NULL;
- if(fHistMaxSignal) delete fHistMaxSignal; fHistMaxSignal = NULL;
- if(fHistTotSignal) delete fHistTotSignal; fHistTotSignal = NULL;
- if(fHistPadRMS) delete fHistPadRMS; fHistPadRMS = NULL;
- if(fHistSideA) delete fHistSideA; fHistSideA = NULL;
- if(fHistSideC) delete fHistSideC; fHistSideC = NULL;
-
}
void AliHLTTPCNoiseMapComponent::ResetHistograms(){
// see header file for class documentation
- //if(fHistPartition) fHistPartition->Reset();
- if(fHistMaxSignal) fHistMaxSignal->Reset();
- if(fHistTotSignal) fHistTotSignal->Reset();
- if(fHistPadRMS) fHistPadRMS->Reset();
-
- if(fHistSideA) fHistSideA->Reset();
- if(fHistSideC) fHistSideC->Reset();
+ if(fHistSideAMaxSignal) fHistSideAMaxSignal->Reset();
+ if(fHistSideATotSignal) fHistSideATotSignal->Reset();
+ if(fHistSideAPadRMS) fHistSideAPadRMS->Reset();
+
+ if(fHistSideCMaxSignal) fHistSideCMaxSignal->Reset();
+ if(fHistSideCTotSignal) fHistSideCTotSignal->Reset();
+ if(fHistSideCPadRMS) fHistSideCPadRMS->Reset();
}
int AliHLTTPCNoiseMapComponent::Configure(const char* arguments) {
argument=((TObjString*)pTokens->At(i))->GetString();
if (argument.IsNull()) continue;
- if (argument.CompareTo("-apply-noisemap")==0) {
- if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
- HLTInfo("got \'-apply-noisemap\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
-
- }
- else if (argument.CompareTo("-plot-side-c")==0) {
- if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
- HLTInfo("got \'-plot-side-c\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
+ if (argument.CompareTo("-read-noisemap")==0) {
+ //if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
+ fReadNoiseMap = kTRUE;
+ HLTInfo("got \'-read-noisemap\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
}
- else if (argument.CompareTo("-plot-side-a")==0) {
- if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
- HLTInfo("got \'-plot-side-a\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
-
- }
else if(argument.CompareTo("-reset-histograms")==0){
- if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
- HLTInfo("got \'-reset-histograms\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
-
+ //if ((bMissingParam=(++i>=pTokens->GetEntries()))) break;
+ fResetHistograms = kTRUE;
+ HLTInfo("got \'-reset-histograms\': %s", ((TObjString*)pTokens->At(i))->GetString().Data());
}
else {
HLTError("unknown argument %s", argument.Data());
int AliHLTTPCNoiseMapComponent::Reconfigure(const char* cdbEntry, const char* chainId) {
// see header file for class documentation
- int iResult=0;
- const char* path="HLT/ConfigTPC/TPCNoiseMapComponent";
- const char* defaultNotify="";
- if (cdbEntry) {
- path=cdbEntry;
- defaultNotify=" (default)";
- }
- if (path) {
- HLTInfo("reconfigure from entry %s%s, chain id %s", path, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>");
- AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(path/*,GetRunNo()*/);
- if (pEntry) {
- TObjString* pString=dynamic_cast<TObjString*>(pEntry->GetObject());
- if (pString) {
- HLTInfo("received configuration object string: \'%s\'", pString->GetString().Data());
- iResult=Configure(pString->GetString().Data());
- } else {
- HLTError("configuration object \"%s\" has wrong type, required TObjString", path);
- }
- } else {
- HLTError("cannot fetch object \"%s\" from CDB", path);
- }
+ int iResult = 0;
+ const char* path = "HLT/ConfigTPC/TPCNoiseMapComponent";
+ const char* defaultNotify = "";
+ if(cdbEntry){
+ path = cdbEntry;
+ defaultNotify = "(manual operator entry)";
}
+ if(path){
+ HLTInfo("reconfigure from entry %s%s, chain id %s", path, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>" );
+
+ AliCDBPath argumentPath(path);
+ AliCDBStorage *stor = AliCDBManager::Instance()->GetDefaultStorage();
+
+ if(stor){
+ Int_t version = stor->GetLatestVersion(path, GetRunNo());
+ Int_t subVersion = stor->GetLatestSubVersion(path, GetRunNo(), version);
+ AliCDBEntry *pEntry = stor->Get(argumentPath,GetRunNo(), version, subVersion);
+
+ if(pEntry){
+ TObjString* pString = dynamic_cast<TObjString*>(pEntry->GetObject());
+ if(pString){
+ HLTInfo("received configuration object string: \'%s\'", pString->GetString().Data());
+ iResult = Configure(pString->GetString().Data());
+ } // if pString is valid
+ else {
+ HLTError("configuration object \"%s\" has wrong type, required TObjString", path);
+ }
+ } // if pEntry is valid
+ else {
+ HLTError("cannot fetch object \"%s\" from CDB", path);
+ }
+ } // end if stor is valid
+ } // end if path is valid
+
return iResult;
+
+
}