char line[1024];
while ( in.getline(line,1024) )
stream << line << "\n";
- datastring = TString(stream.str().c_str());
in.close();
- return DecodeOccupancy(datastring,occupancyMap);
+ return DecodeOccupancy(stream.str().c_str(),occupancyMap);
}
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::DecodeOccupancy(TString data, AliMUONVStore& occupancyMap)
+AliMUONTrackerIO::DecodeOccupancy(const char* data, AliMUONVStore& occupancyMap)
{
/// Decode occupancy string created append values to the occupancyMap store.
/// Expected format of the file is :
if ( ! AliMpDDLStore::Instance(kFALSE) )
{
AliErrorClass("Mapping not loaded. Cannot work");
- return 0;
+ return kNoMapping;
}
char line[1024];
- istringstream in(data.Data());
+ istringstream in(data);
Int_t n(0);
sin >> busPatchId >> manuId >> sumn >> numberOfEvents;
+ if ( busPatchId == -1 && manuId == -1 && sumn == 0 && numberOfEvents == 0 )
+ {
+ /// DA could not produce information (because run failed somehow).
+ /// That's OK, but let the world know about it
+ return kNoInfoFile;
+ }
+
Int_t detElemId = AliMpDDLStore::Instance()->GetDEfromBus(busPatchId);
AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
return kCannotOpenFile;
}
- TString datastring;
ostringstream stream;
char line[1024];
while ( in.getline(line,1024) )
stream << line << "\n";
- datastring = TString(stream.str().c_str());
in.close();
- return DecodePedestals(datastring,pedStore);
+ return DecodePedestals(stream.str().c_str(),pedStore);
}
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::DecodePedestals(TString data, AliMUONVStore& pedStore)
+AliMUONTrackerIO::DecodePedestals(const char* data, AliMUONVStore& pedStore)
{
/// Read pedestal Data (produced by the MUONTRKda.exe program for instance)
/// and append the read values into the given VStore
Int_t busPatchID, manuID, manuChannel;
Float_t pedMean, pedSigma;
Int_t n(0);
- istringstream in(data.Data());
+ istringstream in(data);
while ( in.getline(line,1024) )
{
return kCannotOpenFile;
}
- TString datastring;
ostringstream stream;
char line[1024];
while ( in.getline(line,1024) )
stream << line << "\n";
- datastring = TString(stream.str().c_str());
in.close();
- return DecodeGains(datastring,gainStore,comment);
+ return DecodeGains(stream.str().c_str(),gainStore,comment);
}
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::DecodeGains(TString data, AliMUONVStore& gainStore,
- TString& comment)
+AliMUONTrackerIO::DecodeGains(const char* data, AliMUONVStore& gainStore,
+ TString& comment)
{
/// Read gain file (produced by the MUONTRKda.exe program for instance)
/// and append the read values into the given VStore
- /// To be used when the input is a TString (for instance when getting data
+ /// To be used when the input is a string (for instance when getting data
/// from AMORE DB).
char line[1024];
- istringstream in(data.Data());
+ istringstream in(data);
Int_t busPatchID, manuID, manuChannel;
Float_t a0, a1;
Int_t thres;
Int_t* runs(0x0);
Int_t* dac(0x0);
Int_t nDAC(0);
+ Int_t nInit(0),f1nbp(0),f2nbp(0);
while ( in.getline(line,1024) )
{
if ( sline.Contains("DUMMY") )
{
AliDebugClass(1,"Got a dummy file here");
+ delete [] runs;
+ delete [] dac;
return kDummyFile;
}
if ( sline.Contains("* Run") )
{
if ( nDAC < 100 )
{
+ delete[] runs;
+ delete[] dac;
runs = new Int_t[nDAC];
dac = new Int_t[nDAC];
// skip two lines
in.getline(line,1024);
+ sline = line;
+ if (!sline.Contains("* nInit ="))
+ {
+ AliErrorClass("Improper format : was expecting nInit= line...");
+ }
+ else
+ {
+ sscanf(line,"// * nInit = %d * f1nbp = %d * f2nbp = %d",&nInit,&f1nbp,&f2nbp);
+ AliDebugClass(1,Form("nInit = %d",nInit));
+ AliDebugClass(1,Form("f1nbp = %d",f1nbp));
+ AliDebugClass(1,Form("f2nbp = %d",f2nbp));
+ }
+ in.getline(line,1024);
in.getline(line,1024);
// then get run and dac values
- Int_t iDAC(0);
+ Int_t iDAC(0);
for ( Int_t i = 0; i < nDAC; ++i )
{
in.getline(line,1024);
{
AliErrorClass(Form("Something went wrong, as I get too big nDAC = %d",nDAC));
nDAC = 0;
+ delete [] runs;
+ delete [] dac;
return kFormatError;
}
}
{
comment += Form(";(RUN %d = DAC %d)",runs[i],dac[i]);
}
+ comment += Form(";(nDAC = %d)",nDAC);
+ comment += Form(";(nInit = %d)",nInit);
+ comment += Form(";(f1nbp = %d)",f1nbp);
+ comment += Form(";(f2nbp = %d)",f2nbp);
delete[] runs;
delete[] dac;
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::ReadCapacitances(const char* file, AliMUONVStore& capaStore)
+AliMUONTrackerIO::ReadCapacitances(const char* filename, AliMUONVStore& capaStore)
{
/// Read capacitance file
/// and append the read values into the given VStore
- ifstream in(gSystem->ExpandPathName(file));
- if (in.bad()) return kCannotOpenFile;
+ TString sFilename(gSystem->ExpandPathName(filename));
+
+ std::ifstream in(sFilename.Data());
+ if (!in.good())
+ {
+ return kCannotOpenFile;
+ }
+
+ ostringstream stream;
+ char line[1024];
+ while ( in.getline(line,1024) )
+ stream << line << "\n";
+
+ in.close();
+
+ return DecodeCapacitances(stream.str().c_str(),capaStore);
+}
+
+//_____________________________________________________________________________
+Int_t
+AliMUONTrackerIO::DecodeCapacitances(const char* data, AliMUONVStore& capaStore)
+{
+ /// Read capacitances and append the read values into the given VStore
+ /// To be used when the input is a string (for instance when getting data
+ /// from AMORE DB).
Int_t ngenerated(0);
char line[1024];
Int_t serialNumber(-1);
AliMUONVCalibParam* param(0x0);
-
+ istringstream in(data);
+
while ( in.getline(line,1024,'\n') )
{
if ( isdigit(line[0]) )
}
continue;
}
+
+ if (!param) continue;
+
Int_t channel;
Float_t capaValue;
Float_t injectionGain;
++ngenerated;
}
- in.close();
-
return ngenerated;
}
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::ReadConfig(const char* filename, AliMUONVStore& confStore, Bool_t& changed)
+AliMUONTrackerIO::ReadConfig(const char* filename, AliMUONVStore& confStore)
{
/// Read config file (produced by the MUONTRKda.exe program for instance)
/// and append the read values into the given VStore
/// To be used when the input is a file (for instance when reading data
/// from the OCDB).
- /// changed must be set to kFALSE before calling this method for the first time
- /// (then the subsequent calls must not set it !)
- ///
TString sFilename(gSystem->ExpandPathName(filename));
return kCannotOpenFile;
}
- TString datastring;
ostringstream stream;
char line[1024];
while ( in.getline(line,1024) )
stream << line << "\n";
- datastring = TString(stream.str().c_str());
in.close();
- return DecodeConfig(datastring,confStore,changed);
+ return DecodeConfig(stream.str().c_str(),confStore);
}
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::DecodeConfig(TString data, AliMUONVStore& confStore, Bool_t& changed)
+AliMUONTrackerIO::DecodeConfig(const char* data, AliMUONVStore& confStore)
{
/// Read config data (produced by the MUONTRKda.exe program for instance)
/// and append the read values into the given VStore
/// To be used when the input is a TString (for instance when getting data
/// from AMORE DB).
- /// changed must be set to kFALSE before calling this method for the first time
- /// (then the subsequent calls must not set it !)
char line[1024];
Int_t busPatchID, manuID;
Int_t n(0);
- istringstream in(data.Data());
+ istringstream in(data);
while ( in.getline(line,1024) )
{
AliDebugClass(3,Form("line=%s",line));
if ( line[0] == '#' )
{
- TString sline(line);
- sline.ToUpper();
- if (sline.Contains("CHANGED") && !sline.Contains("UNCHANGED")) changed = kTRUE;
continue;
}
std::istringstream sin(line);
//_____________________________________________________________________________
Int_t
-AliMUONTrackerIO::WriteConfig(ofstream& out, AliMUONVStore& confStore)
+AliMUONTrackerIO::WriteConfig(ofstream& out, const AliMUONVStore& confStore)
{
/// Write the conf store as an ASCII file
/// Note that we are converting (back) the detElemId into a busPatchId