X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCPreprocessor.cxx;h=7bf514ed84bde5606890478fba3dcc2ea93e8666;hb=6f6f9cca6173cc6bb495dba010621ae857e6dfb1;hp=25c2baec99f01b0aacf8b830dab70a620cd03678;hpb=dbc10140806749f7bea859ade32824fbf38380f0;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCPreprocessor.cxx b/TPC/AliTPCPreprocessor.cxx index 25c2baec99f..7bf514ed84b 100644 --- a/TPC/AliTPCPreprocessor.cxx +++ b/TPC/AliTPCPreprocessor.cxx @@ -47,8 +47,17 @@ const TString kCosmicRunType = "COSMIC"; // cosmic run identifier const TString kLaserRunType = "LASER"; // laser run identifier const TString kDaqRunType = "DAQ"; // DAQ run identifier const TString kAmandaTemp = "TPC_PT_%d_TEMPERATURE"; // Amanda string for temperature entries +const TString kAmandaDDL = "DDL%d"; // Amanda string for list of active DDLs +const Int_t kNumDDL = 216; // number of TPC DDLs +const Int_t kFirstDDL = 768; // identifier of first DDL //const Double_t kFitFraction = 0.7; // Fraction of DCS sensor fits required const Double_t kFitFraction = -1.0; // Don't require minimum number of fits in commissioning run +const Int_t kNumPressureSensors = 3; // number of pressure sensors +const char* kPressureSensorNames[kNumPressureSensors] = { + "CavernAtmosPressure", + "CavernAtmosPressure2", + "SurfaceAtmosPressure" }; + // // This class is the SHUTTLE preprocessor for the TPC detector. @@ -59,7 +68,8 @@ ClassImp(AliTPCPreprocessor) //______________________________________________________________________________________________ AliTPCPreprocessor::AliTPCPreprocessor(AliShuttleInterface* shuttle) : AliPreprocessor("TPC",shuttle), - fConfEnv(0), fTemp(0), fHighVoltage(0), fHighVoltageStat(0), fGoofie(0), fConfigOK(kTRUE), fROC(0) + fConfEnv(0), fTemp(0), fHighVoltage(0), fHighVoltageStat(0), fGoofie(0), + fPressure(0), fConfigOK(kTRUE), fROC(0) { // constructor fROC = AliTPCROC::Instance(); @@ -77,7 +87,8 @@ AliTPCPreprocessor::AliTPCPreprocessor(AliShuttleInterface* shuttle) : //______________________________________________________________________________________________ AliTPCPreprocessor::AliTPCPreprocessor(const AliTPCPreprocessor& ) : AliPreprocessor("TPC",0), - fConfEnv(0), fTemp(0), fHighVoltage(0), fHighVoltageStat(0), fGoofie(0), fConfigOK(kTRUE), fROC(0) + fConfEnv(0), fTemp(0), fHighVoltage(0), fHighVoltageStat(0), fGoofie(0), + fPressure(0), fConfigOK(kTRUE), fROC(0) { Fatal("AliTPCPreprocessor", "copy constructor not implemented"); @@ -92,6 +103,9 @@ AliTPCPreprocessor::~AliTPCPreprocessor() delete fTemp; delete fHighVoltage; + delete fHighVoltageStat; + delete fGoofie; + delete fPressure; } //______________________________________________________________________________________________ AliTPCPreprocessor& AliTPCPreprocessor::operator = (const AliTPCPreprocessor& ) @@ -105,12 +119,8 @@ AliTPCPreprocessor& AliTPCPreprocessor::operator = (const AliTPCPreprocessor& ) void AliTPCPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime) { - // Creates AliTestDataDCS object -- start maps half an hour beforre actual run start - UInt_t startTimeLocal = startTime-3600; - UInt_t endTimeLocal = endTime+1800; - - AliPreprocessor::Initialize(run, startTimeLocal, endTimeLocal); + AliPreprocessor::Initialize(run, startTime, endTime); AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run, TTimeStamp((time_t)startTime,0).AsString(), @@ -140,7 +150,7 @@ void AliTPCPreprocessor::Initialize(Int_t run, UInt_t startTime, fConfigOK = kFALSE; return; } - fTemp = new AliTPCSensorTempArray(startTimeLocal, endTimeLocal, confTree, kAmandaTemp); + fTemp = new AliTPCSensorTempArray(startTime, endTime, confTree, kAmandaTemp); fTemp->SetValCut(kValCutTemp); fTemp->SetDiffCut(kDiffCutTemp); } @@ -159,7 +169,10 @@ void AliTPCPreprocessor::Initialize(Int_t run, UInt_t startTime, fConfigOK = kFALSE; return; } - fHighVoltage = new AliDCSSensorArray(startTime, endTime, confTree); + time_t timeStart = (time_t)(((TString)GetRunParameter("DAQ_time_start")).Atoi()); + time_t timeEnd = (time_t)(((TString)GetRunParameter("DAQ_time_end")).Atoi()); + fHighVoltage = new AliDCSSensorArray (UInt_t(timeStart), + UInt_t(timeEnd), confTree); } // High voltage status values @@ -193,10 +206,26 @@ void AliTPCPreprocessor::Initialize(Int_t run, UInt_t startTime, fConfigOK = kFALSE; return; } - fGoofie = new AliDCSSensorArray(startTimeLocal, endTimeLocal, confTree); + fGoofie = new AliDCSSensorArray(startTime, endTime, confTree); } - + // Pressure values + + TString runType = GetRunType(); + + if( runType == kPhysicsRunType || + runType == kLaserRunType ) { + TString pressureConf = fConfEnv->GetValue("Pressure","ON"); + pressureConf.ToUpper(); + if (pressureConf != "OFF" ) { + TClonesArray * array = new TClonesArray("AliDCSSensor",kNumPressureSensors); + for(Int_t j = 0; j < kNumPressureSensors; j++) { + AliDCSSensor * sens = new ((*array)[j])AliDCSSensor; + sens->SetStringID(kPressureSensorNames[j]); + } + fPressure = new AliDCSSensorArray(startTime, endTime, array); + } + } } //______________________________________________________________________________________________ @@ -215,56 +244,65 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) TObject * status; UInt_t dcsResult=0; - if (errorHandling == "OFF" ) { - if (!dcsAliasMap) dcsResult=1; - if (dcsAliasMap->GetEntries() == 0 ) dcsResult=1; - status = new TParameter("dcsResult",dcsResult); - resultArray->Add(status); - } else { - if (!dcsAliasMap) return 9; - if (dcsAliasMap->GetEntries() == 0 ) return 9; - } - + if (!dcsAliasMap) dcsResult=1; + if (dcsAliasMap->GetEntries() == 0 ) dcsResult=1; + status = new TParameter("dcsResult",dcsResult); + resultArray->Add(status); - TString runType = GetRunType(); + if ( dcsResult == 0 ) { + // Temperature sensors are processed by AliTPCCalTemp - TString tempConf = fConfEnv->GetValue("Temperature","ON"); - tempConf.ToUpper(); - if (tempConf != "OFF" ) { - UInt_t tempResult = MapTemperature(dcsAliasMap); - result=tempResult; - status = new TParameter("tempResult",tempResult); - resultArray->Add(status); - } + TString tempConf = fConfEnv->GetValue("Temperature","ON"); + tempConf.ToUpper(); + if (tempConf != "OFF" ) { + UInt_t tempResult = MapTemperature(dcsAliasMap); + if ( tempConf != "TRY") result+=tempResult; + status = new TParameter("tempResult",tempResult); + resultArray->Add(status); + } // High Voltage recordings - TString hvConf = fConfEnv->GetValue("HighVoltage","ON"); - hvConf.ToUpper(); - if (hvConf != "OFF" ) { - UInt_t hvResult = MapHighVoltage(dcsAliasMap); - result+=hvResult; - status = new TParameter("hvResult",hvResult); - resultArray->Add(status); - } + TString hvConf = fConfEnv->GetValue("HighVoltage","ON"); + hvConf.ToUpper(); + if (hvConf != "OFF" ) { + UInt_t hvResult = MapHighVoltage(dcsAliasMap); + if (hvConf != "TRY") result+=hvResult; + status = new TParameter("hvResult",hvResult); + resultArray->Add(status); + } - // Goofie values + // Goofie values - TString goofieConf = fConfEnv->GetValue("Goofie","ON"); - goofieConf.ToUpper(); - if (goofieConf != "OFF" ) { - UInt_t goofieResult = MapGoofie(dcsAliasMap); - result+=goofieResult; - status = new TParameter("goofieResult",goofieResult); - resultArray->Add(status); - } + TString goofieConf = fConfEnv->GetValue("Goofie","ON"); + goofieConf.ToUpper(); + if (goofieConf != "OFF" ) { + UInt_t goofieResult = MapGoofie(dcsAliasMap); + if (goofieConf != "TRY") result+=goofieResult; + status = new TParameter("goofieResult",goofieResult); + resultArray->Add(status); + } + // Pressure values + + if( runType == kPhysicsRunType || + runType == kLaserRunType ) { + + TString pressureConf = fConfEnv->GetValue("Pressure","ON"); + pressureConf.ToUpper(); + if (pressureConf != "OFF" ) { + UInt_t pressureResult = MapPressure(dcsAliasMap); + status = new TParameter("pressureResult",pressureResult); + resultArray->Add(status); + } + } + } // Other calibration information will be retrieved through FXS files // examples: // TList* fileSourcesDAQ = GetFile(AliShuttleInterface::kDAQ, "pedestals"); @@ -316,12 +354,13 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) pulserSource[1] = AliShuttleInterface::kDAQ; } if (source == "DAQHLT" ) numSources=2; + if (source == "TRY" ) numSources=2; UInt_t pulserResult=0; for (Int_t i=0; i("pulserResult",pulserResult); resultArray->Add(status); } @@ -344,12 +383,13 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) rawSource[1] = AliShuttleInterface::kDAQ; } if (source == "DAQHLT" ) numSources=2; + if (source == "TRY" ) numSources=2; UInt_t rawResult=0; for (Int_t i=0; i("rawResult",rawResult); resultArray->Add(status); } @@ -360,10 +400,10 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) TString altroConf = fConfEnv->GetValue("AltroConf","ON"); - goofieConf.ToUpper(); + altroConf.ToUpper(); if (altroConf != "OFF" ) { - UInt_t altroResult = ExtractAltro(AliShuttleInterface::kDCS); - result+=altroResult; + UInt_t altroResult = ExtractAltro(AliShuttleInterface::kDCS,dcsAliasMap); + if (altroConf != "TRY" ) result+=altroResult; status = new TParameter("altroResult",altroResult); resultArray->Add(status); } @@ -387,6 +427,7 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) ceSource[1] = AliShuttleInterface::kDAQ; } if (source == "DAQHLT" ) numSources=2; + if (source == "TRY" ) numSources=2; UInt_t ceResult=0; for (Int_t i=0; i("ceResult",ceResult); resultArray->Add(status); @@ -413,6 +454,7 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap) qaSource[1] = AliShuttleInterface::kDAQ; } if (source == "DAQHLT" ) numSources=2; + if (source == "TRY" ) numSources=2; UInt_t qaResult=0; for (Int_t i=0; iDelete(); - return 0; - } else { - return result; - } +// Store component status to OCDB + + AliCDBMetaData metaData; + metaData.SetBeamPeriod(0); + metaData.SetResponsible("Haavard Helstrup"); + metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH); + metaData.SetComment("Preprocessor AliTPC status."); + Store("Calib", "PreprocStatus", resultArray, &metaData, 0, kFALSE); + resultArray->Delete(); + delete resultArray; + + if (errorHandling == "OFF" ) return 0; + return result; + } //______________________________________________________________________________________________ UInt_t AliTPCPreprocessor::MapTemperature(TMap* dcsAliasMap) @@ -478,6 +522,30 @@ UInt_t AliTPCPreprocessor::MapTemperature(TMap* dcsAliasMap) return result; } +//______________________________________________________________________________________________ +UInt_t AliTPCPreprocessor::MapPressure(TMap* dcsAliasMap) +{ + + // extract DCS pressure maps. Perform fits to save space + + UInt_t result=0; + TMap *map = fPressure->ExtractDCS(dcsAliasMap); + if (map) { + fPressure->MakeSplineFit(map); + Double_t fitFraction = 1.0*fPressure->NumFits()/fPressure->NumSensors(); + if (fitFraction > kFitFraction ) { + AliInfo(Form("Pressure values extracted, fits performed.\n")); + } else { + Log ("Too few pressure maps fitted. \n"); + result = 9; + } + } else { + Log("No pressure map extracted. \n"); + result=9; + } + delete map; + return result; +} //______________________________________________________________________________________________ UInt_t AliTPCPreprocessor::MapHighVoltage(TMap* dcsAliasMap) @@ -659,10 +727,13 @@ UInt_t AliTPCPreprocessor::ExtractPedestals(Int_t sourceFXS) if ( !storeOK ) ++result; } } else { - Log ("Error: no entries in input file list!"); + Log ("Error: no entries in pedestal file list!"); result = 1; } + delete calPadPed; + delete calPadRMS; + return result; } @@ -763,9 +834,11 @@ UInt_t AliTPCPreprocessor::ExtractPulser(Int_t sourceFXS) if ( !storeOK ) ++result; } } else { - Log ("Error: no entries in input file list!"); + Log ("Error: no entries in pulser file list!"); result = 1; } + pulserObjects->Delete(); + delete pulserObjects; return result; } @@ -824,9 +897,12 @@ UInt_t AliTPCPreprocessor::ExtractRaw(Int_t sourceFXS) Bool_t storeOK = Store("Calib", "Raw", rawArray, &metaData, 0, kTRUE); if ( !storeOK ) ++result; } else { - Log ("Error: no entries in input file list!"); + Log ("Error: no entries in raw file list!"); result = 1; } + + rawArray->Delete(); + delete rawArray; return result; } @@ -865,7 +941,28 @@ UInt_t AliTPCPreprocessor::ExtractCE(Int_t sourceFXS) rocQtime = new TObjArray(nSectors); rocQtime->SetName("rocQtime"); ceObjects->Add(rocQtime); - + +// Temperature maps + + if (fTemp) { + AliTPCSensorTempArray *tempMap = new AliTPCSensorTempArray(*fTemp); + tempMap->SetNameTitle("TempMap","TempMap"); + ceObjects->Add(tempMap); + } + +// Pressure maps + + if (fPressure) { + AliDCSSensor *sensor=0, *sensorCopy=0; + for (Int_t isensor=0; isensorGetSensor(kPressureSensorNames[isensor]); + if (sensor) { + sensorCopy = new AliDCSSensor(*sensor); + sensorCopy->SetNameTitle(kPressureSensorNames[isensor],kPressureSensorNames[isensor]); + ceObjects->Add(sensorCopy); + } + } + } UInt_t result=0; @@ -907,7 +1004,7 @@ UInt_t AliTPCPreprocessor::ExtractCE(Int_t sourceFXS) TGraph *grT=calCE->MakeGraphTimeCE(sector,0,2); // T time graph if ( grT ) rocTtime->AddAt(grT,sector); TGraph *grQ=calCE->MakeGraphTimeCE(sector,0,3); // Q time graph - if ( grQ ) rocTtime->AddAt(grQ,sector); + if ( grQ ) rocQtime->AddAt(grQ,sector); } TGraph *grT=calCE->MakeGraphTimeCE(-1,0,2); // A side average @@ -934,10 +1031,13 @@ UInt_t AliTPCPreprocessor::ExtractCE(Int_t sourceFXS) if ( !storeOK ) ++result; } else { - Log ("Error: no entries!"); + Log ("Error: no CE entries available from FXS!"); result = 1; } + ceObjects->Delete(); + delete ceObjects; + return result; } //______________________________________________________________________________________________ @@ -981,8 +1081,10 @@ UInt_t AliTPCPreprocessor::ExtractQA(Int_t sourceFXS) metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH); metaData.SetComment("Preprocessor AliTPC data base entries."); - Bool_t storeOK = Store("Calib", "QA", calQA, &metaData, 0, kTRUE); + Bool_t storeOK = Store("Calib", "QA", calQA, &metaData, 0, kFALSE); if ( !storeOK ) ++result; + + delete calQA; } } } else { @@ -999,10 +1101,10 @@ UInt_t AliTPCPreprocessor::ExtractQA(Int_t sourceFXS) //______________________________________________________________________________________________ -UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) +UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS, TMap* dcsMap) { // - // Read pulser calibration file from file exchage server + // Read Altro configuration file from file exchage server // Keep original entry from OCDB in case no new pulser calibration is available // TObjArray *altroObjects=0; @@ -1011,6 +1113,9 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) AliTPCCalPad *acqStop=0; AliTPCCalPad *FPED=0; AliTPCCalPad *masked=0; + AliTPCCalPad *k1=0, *k2=0, *k3=0; + AliTPCCalPad *l1=0, *l2=0, *l3=0; + TMap *mapRCUconfig=0; AliCDBEntry* entry = GetFromOCDB("Calib", "AltroConfig"); if (entry) altroObjects = (TObjArray*)entry->GetObject(); @@ -1044,7 +1149,42 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) masked = new AliTPCCalPad("Masked","Masked"); altroObjects->Add(masked); } - + k1 = (AliTPCCalPad*)altroObjects->FindObject("K1"); + if ( !k1 ) { + k1 = new AliTPCCalPad("K1","K1"); + altroObjects->Add(k1); + } + k2 = (AliTPCCalPad*)altroObjects->FindObject("K2"); + if ( !k2 ) { + k2 = new AliTPCCalPad("K2","K2"); + altroObjects->Add(k2); + } + k3 = (AliTPCCalPad*)altroObjects->FindObject("K3"); + if ( !k3 ) { + k3 = new AliTPCCalPad("K3","K3"); + altroObjects->Add(k3); + } + l1 = (AliTPCCalPad*)altroObjects->FindObject("L1"); + if ( !l1 ) { + l1 = new AliTPCCalPad("L1","L1"); + altroObjects->Add(l1); + } + l2 = (AliTPCCalPad*)altroObjects->FindObject("L2"); + if ( !l2 ) { + l2 = new AliTPCCalPad("L2","L2"); + altroObjects->Add(l2); + } + l3 = (AliTPCCalPad*)altroObjects->FindObject("L3"); + if ( !l3 ) { + l3 = new AliTPCCalPad("L3","L3"); + altroObjects->Add(l3); + } + mapRCUconfig = (TMap*)altroObjects->FindObject("RCUconfig"); + if (!mapRCUconfig) { + mapRCUconfig = new TMap(); + mapRCUconfig->SetName("RCUconfig"); + altroObjects->Add(mapRCUconfig); + } UInt_t result=0; @@ -1052,11 +1192,46 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) Int_t nSectors = fROC->GetNSectors(); Bool_t changed=false; + if (altroObjects == 0 ) altroObjects = new TObjArray; + +// extract list of active DDLs + + Bool_t found; + TString arrDDL(kNumDDL); + arrDDL.Append('0',kNumDDL); + for ( Int_t iDDL = 0; iDDLFindObject(stringID.Data()); + found = false; + if ( pair ) { + TObjArray *valueSet=(TObjArray*)pair->Value(); + if ( valueSet) { + AliDCSValue *val = (AliDCSValue*)valueSet->At(0); + if (val) found = val->GetBool(); + } + } + if (found){ + arrDDL[iDDL] = '1'; + } else { + arrDDL[iDDL] = '0'; + } + } + TObjString *ddlArray = new TObjString; + ddlArray->SetString(arrDDL); + TMap *activeDDL = new TMap; + activeDDL->SetName("DDLArray"); + TObjString *key = new TObjString("DDLArray"); + activeDDL->Add(key,ddlArray); + altroObjects->Add(activeDDL); + changed=true; + + +// extract Altro configuration files + for ( Int_t id=0; id<2; id++) { TList* list = GetFileSources(sourceFXS,idFXS[id].Data()); if (list && list->GetEntries()>0) { - if (altroObjects == 0 ) altroObjects = new TObjArray; // loop through all files from LDCs @@ -1088,7 +1263,15 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) AliTPCCalPad *acqStopFXS=(AliTPCCalPad*)altroFXS->FindObject("AcqStop"); AliTPCCalPad *FPEDFXS=(AliTPCCalPad*)altroFXS->FindObject("FPED"); AliTPCCalPad *maskedFXS=(AliTPCCalPad*)altroFXS->FindObject("Masked"); - + AliTPCCalPad *k1FXS=(AliTPCCalPad*)altroFXS->FindObject("K1"); + AliTPCCalPad *k2FXS=(AliTPCCalPad*)altroFXS->FindObject("K2"); + AliTPCCalPad *k3FXS=(AliTPCCalPad*)altroFXS->FindObject("K3"); + AliTPCCalPad *l1FXS=(AliTPCCalPad*)altroFXS->FindObject("L1"); + AliTPCCalPad *l2FXS=(AliTPCCalPad*)altroFXS->FindObject("L2"); + AliTPCCalPad *l3FXS=(AliTPCCalPad*)altroFXS->FindObject("L3"); + TMap *mapRCUconfigFXS = (TMap*)altroFXS->FindObject("RCUconfig"); + TIterator *mapFXSiter = mapRCUconfigFXS->MakeIterator(); + changed=true; for (Int_t sector=0; sectorGetCalROC(sector); if ( rocMasked ) masked->SetCalROC(rocMasked,sector); } + if (k1FXS) { + AliTPCCalROC *rocK1=k1FXS->GetCalROC(sector); + if ( rocK1 ) k1->SetCalROC(rocK1,sector); + } + if (k2FXS) { + AliTPCCalROC *rocK2=k2FXS->GetCalROC(sector); + if ( rocK2 ) k2->SetCalROC(rocK2,sector); + } + if (k3FXS) { + AliTPCCalROC *rocK3=k3FXS->GetCalROC(sector); + if ( rocK3 ) k3->SetCalROC(rocK3,sector); + } + if (l1FXS) { + AliTPCCalROC *rocL1=l1FXS->GetCalROC(sector); + if ( rocL1 ) l1->SetCalROC(rocL1,sector); + } + if (l2FXS) { + AliTPCCalROC *rocL2=l2FXS->GetCalROC(sector); + if ( rocL2 ) l2->SetCalROC(rocL2,sector); + } + if (l3FXS) { + AliTPCCalROC *rocL3=l3FXS->GetCalROC(sector); + if ( rocL3 ) l3->SetCalROC(rocL3,sector); + } + } + if (mapRCUconfigFXS) { + Int_t mapEntries = mapRCUconfigFXS->GetEntries(); + TObjString* keyFXS; + TVectorF* vecFXS; + TVectorF* vec; // nSectors = 72 (total number of inner/outer sectors) + for (Int_t i=0; iNext(); + vecFXS=(TVectorF*)mapRCUconfigFXS->GetValue(keyFXS); + vec=(TVectorF*)mapRCUconfig->GetValue(keyFXS); + if (!vec) { + vec = new TVectorF(3*nSectors); + *vec = -1; + mapRCUconfig->Add(keyFXS,vec); + } + if (vec->GetNoElements() != 3*nSectors ) { + vec->ResizeTo(3*nSectors); + } + if (id==0) { // A side + vec->SetSub(0,vecFXS->GetSub(0,nSectors/2-1)); + vec->SetSub(nSectors,vecFXS->GetSub(nSectors,2*nSectors-1)); + } else { // C side + vec->SetSub(nSectors/2,vecFXS->GetSub(nSectors/2,nSectors-1)); + vec->SetSub(2*nSectors,vecFXS->GetSub(2*nSectors,3*nSectors-1)); + } + } } delete altroFXS; f->Close(); @@ -1119,7 +1352,7 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) ++index; } // while(list) } else { - Log ("Error: no entries in input file list!"); + Log ("Error: no entries in AltroConfig file list!"); result = 1; } @@ -1138,5 +1371,8 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS) if ( !storeOK ) ++result; } + altroObjects->Delete(); + delete altroObjects; + return result; }