X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=ITS%2FITSSPDSCANda.cxx;h=a57286a72d393ac41cea14cd4f3bd13b7d5e24b3;hp=5859a5380492e397b2ade3e897fecdee697c18b6;hb=b28b535651883d36aeb0d7e14a5262e0a191772a;hpb=43cfb793e65190c8dc607d6a3eba8ab624fcbe0b diff --git a/ITS/ITSSPDSCANda.cxx b/ITS/ITSSPDSCANda.cxx index 5859a538049..a57286a72d3 100644 --- a/ITS/ITSSPDSCANda.cxx +++ b/ITS/ITSSPDSCANda.cxx @@ -1,12 +1,12 @@ /* -- Contact: - henrik.tydesjo@cern.ch -- Link: - http://tydes.home.cern.ch/tydes/doc/CalibrationOverview/CalibrationAlgorithms/ -- Run Type: - DAQ_MIN_TH_SCAN,DAQ_MEAN_TH_SCAN,DAQ_UNIFORMITY_SCAN,DAQ_NOISY_PIX_SCAN,DAQ_PIX_DELAY_SCAN,DAQ_FO_UNIF_SCAN -- DA Type: - LDC -- Number of events needed: -- Input Files: - daq db config files: spd_standal_params,spd_perm_noisy , previous noisy lists: ./calibResults/ScanNoisy/* , raw data -- Output Files: - Ref Data: ./calibResults/ScanReference/* , DCS update: ./calibResults/ScanDCSconfigToFXS/* , OCDB update: ./calibResults/ScanNoisyToFXS/* , persistent files: ./calibResults/ScanNoisy/* -- Trigger types used: +Contact: henrik.tydesjo@cern.ch +Link: tydes.home.cern.ch/tydes/doc/CalibrationOverview/CalibrationAlgorithms/ +Run Type: DAQ_MIN_TH_SCAN,DAQ_MEAN_TH_SCAN,DAQ_UNIFORMITY_SCAN,DAQ_NOISY_PIX_SCAN,DAQ_PIX_DELAY_SCAN +DA Type: LDC +Number of events needed: Depending on scan type +Input Files: spd_standal_params,spd_perm_noisy , ./calibResults/ScanNoisy/* , raw data +Output Files: ./calibResults/ScanReference/* , ./calibResults/ScanDCSconfigToFXS/* , ./calibResults/ScanNoisyToFXS/* , ./calibResults/ScanNoisy/* +Trigger types used: PHYSICS */ //////////////////////////////////////////////////////////////////////////////// @@ -43,7 +43,9 @@ extern "C" { #include #include #include +#include #include +#include int main(int argc, char **argv) { if (argc<2) { @@ -71,6 +73,9 @@ int main(int argc, char **argv) { TString paramsFileName = Form("%s/standal_params.txt",configFilesDir); TString permNoisyFileName = Form("%s/perm_noisy.txt",configFilesDir); + TFitter *fitter = new TFitter(3); + TVirtualFitter::SetFitter(fitter); + // This line is needed in case of a stand-alone application w/o // $ROOTSYS/etc/system.rootrc file gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo", @@ -80,8 +85,9 @@ int main(int argc, char **argv) { "TStreamerInfo()"); // turn off annoying warning messages - new AliLog; - AliLog::Instance()->SetGlobalDebugLevel(-20); + // NB: Should not be handled here + AliLog* logger = AliLog::GetRootLogger(); + logger->SetGlobalDebugLevel(-20); // calib scan types enum calib_types{MINTH,MEANTH,DAC,UNIMA,NOISE,DELAY}; @@ -99,6 +105,8 @@ int main(int argc, char **argv) { status=daqDA_DB_getFile(idp.Data(),paramsFileName.Data()); if (status) { printf("Failed to get config file %s: status=%d. Using default tuning parameters.\n",idp.Data(),status); + TString rmCmd = Form("rm -f %s",paramsFileName.Data()); + system(rmCmd.Data()); } #endif if (status==0) { @@ -114,10 +122,8 @@ int main(int argc, char **argv) { paramsFile >> paramN; if (paramsFile.eof()) break; paramsFile >> paramV; - TString* paramNS = new TString(paramN); - TString* paramVS = new TString(paramV); - paramNames.AddAtAndExpand((TObject*)paramNS,nrTuningParams); - paramVals.AddAtAndExpand((TObject*)paramVS,nrTuningParams); + paramNames.AddAtAndExpand(new TObjString(paramN),nrTuningParams); + paramVals.AddAtAndExpand(new TObjString(paramV),nrTuningParams); nrTuningParams++; if (paramsFile.eof()) break; } @@ -125,7 +131,8 @@ int main(int argc, char **argv) { } } // for (UInt_t i=0; iData(),((TString*)paramVals.At(i))->Data()); + // // printf("Entry %d: N=%s , V=%s\n",i,((TString*)paramNames.At(i))->Data(),((TString*)paramVals.At(i))->Data()); + // printf("Entry %d: N=%s , V=%s\n",i,((TObjString*)paramNames.At(i))->GetString().Data(),((TObjString*)paramVals.At(i))->GetString().Data()); // } // perm noisy list: @@ -135,6 +142,8 @@ int main(int argc, char **argv) { permstatus=daqDA_DB_getFile(idn.Data(),permNoisyFileName.Data()); if (permstatus) { printf("Failed to get config file %s: status=%d. No permanently noisy pixels will be added.\n",idn.Data(),permstatus); + TString rmCmd = Form("rm -f %s",permNoisyFileName.Data()); + system(rmCmd.Data()); } #endif @@ -276,14 +285,16 @@ int main(int argc, char **argv) { rowStart[eqId] = str->GetHrowStart(); rowEnd[eqId] = str->GetHrowEnd(); rowValue[eqId] = str->GetHrowValue(); - dacValue[eqId] = str->GetHdacValue(); + dacValue[eqId] = str->GetHdacValue(); // this will change below for MEANTH scan + for (UInt_t hs=0; hs<6; hs++) { halfStaveScanned[eqId][hs] = str->GetHhalfStaveScanned(hs); dacHigh[eqId][hs] = str->GetHdacHigh(hs); dacLow[eqId][hs] = str->GetHdacLow(hs); TPAmp[eqId][hs] = str->GetHTPAmp(hs); for (UInt_t chip=0; chip<10; chip++) { - chipPresent[eqId][hs][chip] = str->GetHchipPresent(hs,chip); + chipPresent[eqId][hs][chip] = str->GetHchipPresent(hs,chip); + if (type[eqId]==MEANTH && chipPresent[eqId][hs][chip]) dacValue[eqId] = str->GetHdacLow(hs); } } for (UInt_t chip=0; chip<10; chip++) { @@ -342,19 +353,9 @@ int main(int argc, char **argv) { } scanObj[eqId]->SetType(type[eqId]); scanObj[eqId]->SetDataFormat(dataFormat[eqId]); - for (Int_t hs=0; hs<6; hs++) { - - // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!! - Bool_t halfStavePresent = str->GetHalfStavePresent(hs); - // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!! - + for (Int_t hs=0; hs<6; hs++) { for (UInt_t chip=0; chip<10; chip++) { scanObj[eqId]->SetChipPresent(hs,chip,chipPresent[eqId][hs][chip]); - - // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!! - if (halfStavePresent) scanObj[eqId]->SetChipPresent(hs,chip,kTRUE); - // remove later when the chip present is set correctly !!!!!!!!!!!!!!!!!!!!!!!!!!! - } } scanObj[eqId]->SetRowStart(rowStart[eqId]); @@ -444,11 +445,17 @@ int main(int argc, char **argv) { } - // clean up scan objects (which also saves them) + // clean up scan objects (which also saves them) , check if something happened... + Bool_t somethingHappened = kFALSE; for (UInt_t eqId=0; eqId<20; eqId++) { - if (scanObj[eqId]!=NULL) delete scanObj[eqId]; + if (scanObj[eqId]!=NULL) { + delete scanObj[eqId]; + somethingHappened = kTRUE; + } + } + if (!somethingHappened) { + printf("WARNING: No data processed. Are the calibration headers missing?\n"); } - @@ -486,7 +493,7 @@ int main(int argc, char **argv) { // configure analyzer with tuning parameters etc: for (UInt_t i=0; iSetParam(((TString*)paramNames.At(i))->Data(),((TString*)paramVals.At(i))->Data()); + analyzer->SetParam(((TObjString*)paramNames.At(i))->GetString().Data(),((TObjString*)paramVals.At(i))->GetString().Data()); } UInt_t type = analyzer->GetType(); @@ -638,7 +645,7 @@ int main(int argc, char **argv) { delete handlerPermNoisy; } - + printf("Opening id list file\n"); TString idsFXSFileName = Form("%s/FXSids_run_%d.txt",saveDirIdsToFXS,runNr); ofstream idsFXSfile; idsFXSfile.open(idsFXSFileName.Data()); @@ -647,6 +654,7 @@ int main(int argc, char **argv) { // send noisy data to FXS if (nrNoisyFilesProduced>0) { + printf("Preparing noisy files\n"); // send a tared file of all new noisy maps TString command = Form("cd %s; tar -cf noisy_scan.tar *",saveDirNoisyToFXS); // printf("\n\n%s\n\n",command.Data()); @@ -665,6 +673,7 @@ int main(int argc, char **argv) { // send dcs config files to FXS if (nrDCSconfigFilesProduced>0) { + printf("Preparing DCS config files\n"); // send a tared file of all the dcsConfig text files TString command = Form("cd %s; tar -cf dcsConfig.tar *",saveDirDCSconfigToFXS); // printf("\n\n%s\n\n",command.Data()); @@ -684,6 +693,7 @@ int main(int argc, char **argv) { // send reference data to FXS for (UInt_t eqId=0; eqId<20; eqId++) { if (bScanInit[eqId]) { + printf("Preparing reference data for eq %d\n",eqId); TString fileName = Form("%s/SPDcal_run_%d_eq_%d.root",saveDirRef,runNr,eqId); TString id = Form("SPD_ref_scan_%d",eqId); #ifndef SPD_DA_OFF @@ -698,9 +708,19 @@ int main(int argc, char **argv) { } + printf("Preparing id list file\n"); idsFXSfile.close(); + TString id = "SPD_id_list"; +#ifndef SPD_DA_OFF + status = daqDA_FES_storeFile(idsFXSFileName.Data(),id.Data()); + if (status!=0) { + printf("Failed to export file %s , status %d\n",idsFXSFileName.Data(),status); + return -1; + } +#endif + printf("DA finished.\n"); return 0; }