X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSOnlineSPDscanMultiple.cxx;h=cb271407793a5a7b868f4a42348494e9bc227b01;hb=add58ef69e60e1ece1c76f5aab4819686d2cc2cc;hp=d36b608025f9aeed67a0ad71a1ff3aa177db7afd;hpb=b15de2d227dc229b7a81172ca9c5e251a02fa520;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSOnlineSPDscanMultiple.cxx b/ITS/AliITSOnlineSPDscanMultiple.cxx index d36b608025f..cb271407793 100644 --- a/ITS/AliITSOnlineSPDscanMultiple.cxx +++ b/ITS/AliITSOnlineSPDscanMultiple.cxx @@ -8,28 +8,50 @@ #include "AliITSOnlineSPDscanMultiple.h" #include "AliITSOnlineSPDscanInfoMultiple.h" -ClassImp(AliITSOnlineSPDscanMultiple) - AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple():AliITSOnlineSPDscan(){ // Default constructor } -AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple(Char_t *fileName) { +AliITSOnlineSPDscanMultiple::AliITSOnlineSPDscanMultiple(const Char_t *fileName, Bool_t readFromGridFile) { // constructor - sprintf(fFileName,"%s",fileName); + fFileName=fileName; + fModified=kFALSE; + fInfoModified=kFALSE; // look for a previously saved info object // (if file not found create a new one and return, else read) - FILE* fp0 = fopen(fFileName, "r"); - if (fp0 == NULL) { + + Bool_t bRead = readFromGridFile; + + if (!bRead) { + FILE* fp0 = fopen(fFileName.Data(), "r"); + if (fp0 != NULL) { + bRead=kTRUE; + fclose(fp0); + } + } + + if (bRead) { // open file for reading + fFile = TFile::Open(fFileName.Data(), "READ"); + if (fFile==NULL) { // grid file not found, create new local default file + printf("ERROR: AliITSOnlineSPDscan: File %s not found! Creating 'test999.root' file instead\n",fFileName.Data()); + // create default empty file: + fFileName = "test999.root"; + fScanInfo = new AliITSOnlineSPDscanInfoMultiple(); + fInfoModified=kTRUE; + fFile = new TFile(fFileName.Data(), "RECREATE"); + fWrite=kTRUE; + } + else { // read from file (grid or local) + fWrite=kFALSE; + fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo); + } + } + else { // create new local file fScanInfo = new AliITSOnlineSPDscanInfoMultiple(); - fFile = new TFile(fFileName, "RECREATE"); + fInfoModified=kTRUE; + fFile = new TFile(fFileName.Data(), "RECREATE"); fWrite=kTRUE; } - else { - fclose(fp0); - fFile = new TFile(fFileName, "READ"); - fWrite=kFALSE; - fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo); - } + Init(); } @@ -48,16 +70,6 @@ AliITSOnlineSPDscanMultiple& AliITSOnlineSPDscanMultiple::operator=(const AliITS return *this; } -//void AliITSOnlineSPDscanMultiple::ReadFromTObjArray(TObjArray *arr) { -// ClearThis(); -// Int_t nrEntries = arr->GetEntriesFast(); -// if (nrEntries>0 && nrEntries%2==1) { -// fScanInfo = (AliITSOnlineSPDscanInfoMultiple*) arr->At(0); -// fInfoModified=kTRUE; -// FillFromTObjArray(arr,nrEntries); -// } -//} - UInt_t AliITSOnlineSPDscanMultiple::AddScanStep() { CreateNewStep(); return ((AliITSOnlineSPDscanInfoMultiple*)fScanInfo)->AddScanStep();