void KVINDRAPulserDataTree::ReadData() { // Read data for every run in dataset if( !fRunlist ) { Error("ReadData", "Must set list of runs first using SetRunList(TList*)"); return; } Info("ReadData", "Reading pulser and laser data for all runs"); TIter Nxt_r( fRunlist ); KVINDRADBRun* run = 0; KVNumberList missing1, missing2; while( (run = (KVINDRADBRun*)Nxt_r()) ){ Int_t run_num = run->GetNumber(); //reset all array members to -1 for(register int i=0;i<fTab_siz;i++) fVal[i]=-1.0; Info("ReadData", "Reading data for run %d", run_num); UChar_t msg = ReadData(run_num); if( msg & 1 ) missing1.Add( run_num ); if( msg & 2 ) missing2.Add( run_num ); } if( missing1.GetEntries() ) Warning("ReadData","Missing file 'run[run_num].gene' for runs: %s", missing1.GetList() ); if( missing2.GetEntries() ) Warning("ReadData","Missing file 'run[run_num].[gene][laser]pin' for runs: %s", missing2.GetList() ); }
KVNumberList KVINDRAReconDataAnalyser::PrintAvailableRuns(KVString & datatype) { //Prints list of available runs, sorted according to multiplicity //trigger, for selected dataset, data type/analysis task, and system //Returns list containing all run numbers KVNumberList all_runs= fDataSet->GetRunList(datatype.Data(), fSystem); KVINDRADBRun *dbrun; //first read list and find what triggers are available int triggers[10], n_trigs = 0; all_runs.Begin(); while ( !all_runs.End() ) { dbrun = (KVINDRADBRun *)fDataSet->GetDataBase()->GetTable("Runs")->GetRecord(all_runs.Next()); if (!KVBase:: ArrContainsValue(n_trigs, triggers, dbrun->GetTrigger())) { triggers[n_trigs++] = dbrun->GetTrigger(); } } //sort triggers in ascending order int ord_trig[10]; TMath::Sort(n_trigs, triggers, ord_trig, kFALSE); int trig = 0; while (trig < n_trigs) { cout << " ---> Trigger M>" << triggers[ord_trig[trig]] << endl; all_runs.Begin(); while ( !all_runs.End() ) { dbrun = (KVINDRADBRun *)fDataSet->GetDataBase()->GetTable("Runs")->GetRecord(all_runs.Next()); if (dbrun->GetTrigger() == triggers[ord_trig[trig]]) { cout << " " << Form("%4d", dbrun->GetNumber()); cout << Form("\t(%7d events)", dbrun->GetEvents()); cout << "\t[File written: " << dbrun->GetDatime(). AsString() << "]"; if (dbrun->GetComments()) cout << "\t" << dbrun->GetComments(); cout << endl; } } trig++; cout << endl; } return all_runs; }
KVNumberList KVINDRARawDataAnalyser::PrintAvailableRuns(KVString& datatype) { //Prints list of available runs, sorted according to multiplicity //trigger, for selected dataset, data type/analysis task, and system //Returns list containing all run numbers KVNumberList all_runs = GetDataSet()->GetRunList(datatype.Data(), GetSystem()); KVINDRADBRun* dbrun; //first read list and find what triggers are available vector<int> triggers; all_runs.Begin(); while (!all_runs.End()) { dbrun = (KVINDRADBRun*)GetDataSet()->GetDataBase()->GetDBRun(all_runs.Next()); if (triggers.size() == 0 || std::find(triggers.begin(), triggers.end(), dbrun->GetTrigger()) != triggers.end()) { triggers.push_back(dbrun->GetTrigger()); } } //sort triggers in ascending order std::sort(triggers.begin(), triggers.end()); for (std::vector<int>::iterator it = triggers.begin(); it != triggers.end(); ++it) { cout << " ---> Trigger M>" << *it << endl; all_runs.Begin(); while (!all_runs.End()) { dbrun = (KVINDRADBRun*)GetDataSet()->GetDataBase()->GetDBRun(all_runs.Next()); if (dbrun->GetTrigger() == *it) { cout << " " << Form("%4d", dbrun->GetNumber()); cout << Form("\t(%7d events)", dbrun->GetEvents()); cout << "\t[File written: " << dbrun->GetDatime(). AsString() << "]"; if (dbrun->GetComments()) cout << "\t" << dbrun->GetComments(); cout << endl; } } cout << endl; } return all_runs; }