Level::Level* getLevel(size_t levelNum, const DiabloExe::DiabloExe& exe) { switch(levelNum) { case 0: { Level::Dun sector1("levels/towndata/sector1s.dun"); Level::Dun sector2("levels/towndata/sector2s.dun"); Level::Dun sector3("levels/towndata/sector3s.dun"); Level::Dun sector4("levels/towndata/sector4s.dun"); return new Level::Level(Level::Dun::getTown(sector1, sector2, sector3, sector4), "levels/towndata/town.til", "levels/towndata/town.min", "levels/towndata/town.sol", "levels/towndata/town.cel", std::make_pair(25,29), std::make_pair(0,0), std::map<size_t, size_t>()); break; } case 1: { return FALevelGen::generate(100, 100, levelNum, exe, "levels/l1data/l1.cel"); break; } case 2: case 3: case 4: { std::cerr << "level not supported yet" << std::endl; break; } } return NULL; }
void PatchCDB(const char* runlist, const char* runlist1400, const char* srcOCDBPath="alien://folder=/alice/data/2016/OCDB", const char* destOCDBPath="alien://folder=/alice/cern.ch/user/l/laphecet/OCDBCH3L") { // function to patch the OCDB MUON/Calib/HV for the swap of CH3L Q2S1 and Q2S2 // runlist = full list of runs where Chamber03Left/Quad2Sect1 has an HV problem (trips, too low, plus the 1400 V // below) // runlist1400 = list of runs where Chamber03Left/Quad2Sect1 was struggling at 1400 V // for the runs in runlist1400, the HV will be forced to zero for that sector // note that Chamber03Left/Quad2Sect1 = Chamber02Left/Quad1Sect0 in DCS alias world AliAnalysisTriggerScalers ts(runlist,srcOCDBPath); std::vector<int> vrunlist = ts.GetRunList(); AliAnalysisTriggerScalers ts1400(runlist1400,srcOCDBPath); std::vector<int> vrunlist1400 = ts1400.GetRunList(); AliCDBManager* man = AliCDBManager::Instance(); TObjString sector2("MchHvLvLeft/Chamber02Left/Quad1Sect0.actual.vMon"); TObjString sector1("MchHvLvLeft/Chamber02Left/Quad1Sect1.actual.vMon"); for ( auto r : vrunlist ) { man->SetDefaultStorage(srcOCDBPath); man->SetRun(r); std::cout << "Run " << r << std::endl; AliCDBEntry* entry = man->Get("MUON/Calib/HV"); TMap* hvmap = static_cast<TMap*>(entry->GetObject()->Clone()); TPair* p1 = hvmap->RemoveEntry(§or2); if ( std::find(vrunlist1400.begin(),vrunlist1400.end(),r) != vrunlist1400.end() ) { TObjArray* a1 = static_cast<TObjArray*>(p1->Value()); AliDCSValue* first = static_cast<AliDCSValue*>(a1->First()); AliDCSValue* last = static_cast<AliDCSValue*>(a1->Last()); a1->Delete(); a1->Add(new AliDCSValue(0.0f,first->GetTimeStamp())); a1->Add(new AliDCSValue(0.0f,last->GetTimeStamp())); } TPair* p2 = hvmap->RemoveEntry(§or1); hvmap->Add(new TObjString(sector2),p2->Value()); hvmap->Add(new TObjString(sector1),p1->Value()); delete p1->Key(); delete p2->Key(); man->SetDefaultStorage(destOCDBPath); hvmap->SetUniqueID( hvmap->GetUniqueID() | ( 1 << 9 ) ); AliMUONCDB::WriteToCDB(hvmap,"MUON/Calib/HV",r,r,"Patched for CH3L Quad2Sect1 vs 0 swapping","L. Aphecetche"); man->ClearCache(); } }
void World::generateLevels() { Level::Dun sector1("levels/towndata/sector1s.dun"); Level::Dun sector2("levels/towndata/sector2s.dun"); Level::Dun sector3("levels/towndata/sector3s.dun"); Level::Dun sector4("levels/towndata/sector4s.dun"); mLevels.push_back(Level::Level(Level::Dun::getTown(sector1, sector2, sector3, sector4), "levels/towndata/town.til", "levels/towndata/town.min", "levels/towndata/town.sol", "levels/towndata/town.cel", std::make_pair(25,29), std::make_pair(75,68), std::map<size_t, size_t>(), -1, 1)); for(int32_t i = 1; i < 13; i++) { mLevels.push_back(FALevelGen::generate(100, 100, i, mDiabloExe, i-1, i+1)); } }
Level::Level* getLevel(size_t dLvl, const DiabloExe::DiabloExe& exe) { if(dLvl == 0) { Level::Dun sector1("levels/towndata/sector1s.dun"); Level::Dun sector2("levels/towndata/sector2s.dun"); Level::Dun sector3("levels/towndata/sector3s.dun"); Level::Dun sector4("levels/towndata/sector4s.dun"); return new Level::Level(Level::Dun::getTown(sector1, sector2, sector3, sector4), "levels/towndata/town.til", "levels/towndata/town.min", "levels/towndata/town.sol", "levels/towndata/town.cel", std::make_pair(25,29), std::make_pair(75,68), std::map<size_t, size_t>()); } else if(dLvl < 9) { return FALevelGen::generate(100, 100, dLvl, exe); } else { std::cerr << "level not supported yet" << std::endl; exit(1); return NULL; } }