jit::vector<Vlabel> pgoLayout(Vunit& unit, const Vtext& text) { // Make sure block weights are consistent. fixBlockWeights(unit); // Compute arc weights. Scale scale(unit); FTRACE(1, "profileGuidedLayout: Weighted CFG:\n{}\n", scale.toString()); // Cluster the blocks based on weights and sort the clusters. Clusterizer clusterizer(unit, scale); auto labels = clusterizer.getBlockList(); // Partition by actual code area without changing relative order. auto cold_iter = std::stable_partition(labels.begin(), labels.end(), [&] (Vlabel b) { return text.area(unit.blocks[b].area_idx) == text.area(AreaIndex::Main); }); if (cold_iter != labels.end()) { std::stable_partition(cold_iter, labels.end(), [&] (Vlabel b) { return text.area(unit.blocks[b].area_idx) == text.area(AreaIndex::Cold); }); } if (Trace::moduleEnabled(Trace::layout, 1)) { FTRACE(1, "pgoLayout: final block list: "); for (DEBUG_ONLY auto b : labels) { FTRACE(1, "{}, ", b); } FTRACE(1, "\n"); } return labels; }
void AliTRDreadRaw2Clusters(const char *fname = "raw.root", const char *fnameGeom = "./geometry.root") { AliCDBManager *cdb = AliCDBManager::Instance(); cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); TFile *fGeometryFile = TFile::Open(fnameGeom); TGeoManager *fGeoManager = 0; if (fGeometryFile) { fGeoManager = (TGeoManager *)fGeometryFile->Get("Geometry"); } if (fGeoManager == 0) { cout << "Geo Manager init failed." << endl; } AliTRDdigitsManager manR; manR.CreateArrays(); AliRawReaderRoot reader(fname, 0); reader.Select("TRD"); Int_t ievent = 0; while (reader.NextEvent()) { TTree *treeR = new TTree(sdir, "TRD clusters"); AliTRDclusterizer clusterizer("TRDclusterizer", "TRDclusterizer"); clusterizer.OpenOutput(treeR); Int_t ir = clusterizer.Raw2ClustersChamber(&reader); cout << "Clusterizer returned " << ir << endl; // do something witht he clusters... ievent++; } }
Bool_t TRDFindClusters(Int_t nEvents, Int_t firstEvent, const char* fileNameParam, const char* fileNameDigits, const char* fileNameClusters) { const char *name="TRDFindClusters"; if (gDEBUG>1) cout<<name<<" starts...\n"; if (gDEBUG>1) gBenchmark->Start(name); TFile* paramFile = TFile::Open(fileNameParam); if (!paramFile->IsOpen()) { cerr<<"Cannot open "<<fileNameParam<<" !\n"; return kFALSE; } AliTRDparameter* trdParam = (AliTRDparameter*) paramFile->Get("TRDparameter"); if (!trdParam) { cerr << "TRD parameters have not been found !\n"; return kFALSE; } trdParam->ReInit(); AliTRDclusterizerV1 clusterizer("clusterizer", "Clusterizer class"); clusterizer.SetParameter(trdParam); for (Int_t iEvent = firstEvent; iEvent < firstEvent+nEvents; iEvent++) { clusterizer.Open(fileNameDigits, fileNameClusters, iEvent); clusterizer.ReadDigits(); clusterizer.MakeClusters(); clusterizer.WriteClusters(-1); } paramFile->Close(); delete paramFile; if (gDEBUG>1) gBenchmark->Show(name); return kTRUE; }