/////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// #include "TFile.h" #include "TTree.h" #include "TBranch.h" #include "CompModel/TCompModel.hh" ClassImp(TCompModel) namespace { double kCpuScaleFactor_2005 = 1.267; // double kSf2 = 22.414/5.8*(6./5.8); // }; //_____________________________________________________________________________ TCompModel::TCompModel() { fCdf = new TDetectorModel (); fFarm = new TProdFarmModel (); fTev = new Tevatron (); fTape = new TTapeRobotModel (); fCaf = new TCafModel (); fDisk = new TDiskStorageModel(); //----------------------------------------------------------------------------- // fModel = 1: incremental // = 2: proportional //----------------------------------------------------------------------------- fModel = 1; fT0 = 2005; fDiskVolume_2005 = -1; //----------------------------------------------------------------------------- // with non-optimized executable it takes ~8.9sec on 3.2 GHz GPU (ncdf192) // to generate a Z->ee event (test dataset cdfpewk.zewkad job=1) // use 30 GHz sec... // // optimized executable consumes 5.6 sec/event , improvement by a factor of 1.6 // use 18 GHz sec starting from 2006 //----------------------------------------------------------------------------- fCpuTimePerMcEvent = 30.; // in GHz*sec } //_____________________________________________________________________________ TCompModel::~TCompModel() { delete fCdf; delete fTev; delete fFarm; } //_____________________________________________________________________________ float TCompModel::CslEventSize(int Year) { // average event size out of the data logger, which compresses the events float event_size, lumi; lumi = fTev->AverageInstLumi(Year); event_size = fCdf->CslEventSize(Year,lumi); return event_size; } //_____________________________________________________________________________ float TCompModel::RecoEventSize(int Year) { // average event size out of Production including all the overlaps // assume that it was constant // this is not quite right for the past float event_size, lumi; lumi = fTev->AverageInstLumi(Year); event_size = fCdf->CslEventSize(2005,lumi)*1.4; return event_size; } //_____________________________________________________________________________ float TCompModel::McEventSize(int Year) { // assume that it was constant float event_size; event_size = RecoEventSize(Year)*1.3; return event_size; } //_____________________________________________________________________________ float TCompModel::NL3Events(int Year) { // expected number of the events out of Level3 // model = 0: scale with the dataset size // = 1: first principles, 200Hz in the end // = 2: first principles, 100Hz in the end float nev, lumi, acc_eff, l3_rate_hz; lumi = fTev->DeliveredLumi(Year); acc_eff = fTev->OpsEff(Year); l3_rate_hz = fCdf->L3Rate(Year); nev = l3_rate_hz*kSecondsPerYear*fTev->OpsEff(Year)*fCdf->OpsEff(Year); return nev; } //_____________________________________________________________________________ float TCompModel::TotalNL3Events(int Year) { float nev(0); for (int i=2002; i<=Year; i++) { nev += NL3Events(Year); } return nev; } //_____________________________________________________________________________ float TCompModel::NCslEvents(int Year) { // expected number of the events out of the CSL (1.1 - overlap) - this // ratio holds very well float nev = NL3Events(Year)*1.1; // normalize N(raw 2005) to 140TB if (Year == 2005) nev *= (140/134.); return nev; } //_____________________________________________________________________________ float TCompModel::TotalNCslEvents(int Year) { // expected number of the events out of the CSL (1.1 - overlap) - this // ratio holds very well float nev(0), n1; for (int i=2002; i<=Year; i++) { n1 = NL3Events(Year)*1.1; // normalize N(raw 2005) to 140TB if (Year == 2005) n1 *= (140/134.); nev += nev; } return nev; } //_____________________________________________________________________________ float TCompModel::NReconstructedEvents(int Year) { // expected number of the events out of Production accounting for overlaps // between the streams but also assuming that only compressed B-datasets // will be processed float nev = NCslEvents(Year)*1.4; return nev; } //_____________________________________________________________________________ float TCompModel::TotalNReconstructedEvents(int Year) { // expected number of the events out of Production accounting for overlaps // between the streams but also assuming that only compressed B-datasets // will be processed float nev(0); for (int i=2002; i<=Year; i++) { nev += NCslEvents(Year)*1.4; } return nev; } //_____________________________________________________________________________ float TCompModel::NMcEvents(int Year) { // expected number of the MC events - 0.8 times the number of the // reconstructed events, 0.8 is a 'best guess' factor float nev; nev = 0.8*NL3Events(Year); return nev; } //_____________________________________________________________________________ float TCompModel::TotalNMcEvents(int Year) { // expected number of the MC events - 0.5 times the number of the // reconstructed events float nev(0); for (int i=2002; i<=Year; i++) { nev += 0.8*NL3Events(Year); } return nev; } //_____________________________________________________________________________ float TCompModel::McCpuNeeds(int Year) { // assume