/////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// #include "TFile.h" #include "TTree.h" #include "TBranch.h" #include "TGraph.h" #include "TText.h" #include "THStack.h" #include "CompModel/TCompModel.hh" namespace { }; //_____________________________________________________________________________ int TCompModel::PrintCpuProjections() { printf("%-15s","year"); for (int year=2002; year<2011; year++) printf("%10i",year); printf("\n"); printf("%-15s","Reco Needs"); for (int year=2002; year<2011; year++) { printf("%10.3f",ReconstructionCpuNeeds(year)); } printf("\n"); printf("%-15s","Analysis Needs"); for (int year=2002; year<2011; year++) { printf("%10.3f",AnalysisCpuNeeds(year)); } printf("\n"); printf("%-15s","MC Needs"); for (int year=2002; year<2011; year++) { printf("%10.3f",McCpuNeeds(year)); } printf("\n"); printf("%-15s","Ntupling Needs"); for (int year=2002; year<2011; year++) { printf("%10.3f",NtuplingCpuNeeds(year)); } printf("\n"); printf("%-15s","Total Needs"); for (int year=2002; year<2011; year++) { printf("%10.3f",TotalCpuNeeds(year)); } printf("\n"); printf("%-15s","Onsite CPU"); for (int year=2002; year<2011; year++) { printf("%10.3f",OnsiteCpu(year)); } printf("\n"); printf("%-15s","Farm CPU"); for (int year=2002; year<2011; year++) { printf("%10.3f",fFarm->CpuTotal(year)); } printf("\n"); printf("%-15s","CAF CPU"); for (int year=2002; year<2011; year++) { printf("%10.3f",fCaf->CpuTotal(year)); } printf("\n"); printf("%-15s","Retired CPU"); for (int year=2002; year<2011; year++) { printf("%10.3f",RetiredCpu(year)); } printf("\n"); } //_____________________________________________________________________________ int TCompModel::PrintDataVolume() { printf("%-15s","year"); for (int year=2002; year<2011; year++) { printf("%10i",year); } printf("\n"); printf("%-15s","L3 rate(MB/sec)"); for (int year=2002; year<2011; year++) { float lum = fTev->AverageInstLumi(year); float x = fCdf->CslRate(year)*fCdf->CslEventSize(year,lum)/1024; printf("%10.2f",x); } printf("\n"); printf("%-15s","integr lumi"); for (int year=2002; year<2011; year++) { float x= fTev->DeliveredLumi(year); printf("%10.3f",x); } printf("\n"); printf("%-15s","raw data"); for (int year=2002; year<2011; year++) { float x= RawDataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); printf("%-15s","reco data"); for (int year=2002; year<2011; year++) { float x= RecoDataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); printf("%-15s","MC data"); for (int year=2002; year<2011; year++) { float x= McDataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); printf("%-15s","ntuple data"); for (int year=2002; year<2011; year++) { float x= NtupleDataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); printf("%-15s","size"); for (int year=2002; year<2011; year++) { float x= DataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); printf("%-15s","total size"); for (int year=2002; year<2011; year++) { float x= TotalDataSize(year)/1.e3; printf("%10.3f",x); } printf("\n"); return 0; } //_____________________________________________________________________________ float TCompModel::DiskServerSize(Int_t Year) { // size of the disk server used to price teh disks return fDisk->UnitSize(Year); } //_____________________________________________________________________________ float TCompModel::DiskVolumeToBuy(Int_t Year) { // disk volume in [TB] to buy in FY X such that it will become available // in FY X+1 float vol; vol = ProjectedDiskVolume(Year+1)-ProjectedDiskVolume(Year)+fDisk->RetiredVolume(Year+1); return vol; } //_____________________________________________________________________________ int TCompModel::NDiskServersToBuy(Int_t Year) { // disk volume in [TB] to buy in FY X such that it will become available // in FY X+1 float vol; int nsrv; vol = DiskVolumeToBuy(Year); nsrv = (int)(vol/fDisk->UnitSize(Year))+1; return nsrv; } //_____________________________________________________________________________ float TCompModel::DiskServerPrice(Int_t Year) { // total cost of the disk storage } //_____________________________________________________________________________ float TCompModel::DiskCostProjections(Int_t Year) { // total cost of the disk storage float cost = NDiskServersToBuy(Year)*fDisk->UnitCost(Year); return cost; } //_____________________________________________________________________________ int TCompModel::PrintDiskProjections() { float x, x1, x2, vol; int n_srv; printf (" --- estimated need\n"); printf (" --- estimated aquisitions :\n"); printf("%-20s","fiscal year"); for (int year=2002; year<2011; year++) { printf("%10i",year); } printf("\n"); printf("%-20s","Projected Needs"); for (int year=2002; year<2011; year++) { float x= ProjectedDiskVolume(year); printf("%10.3f",x); } printf("\n"); printf("%-20s","Total Volume"); for (int year=2002; year<2011; year++) { float x= fDisk->TotalVolume(year); printf("%10.3f",x); } printf("\n"); printf("%-20s","Actual Spendings"); for (int year=2002; year<2011; year++) { float x= fDisk->AcquiredUnits(year)*fDisk->UnitCost(year); printf("%10.3f",x); } printf("\n"); printf("%-30s","Projected Available"); for (int year=2003; year<2011; year++) { float x= ProjectedDiskVolume(year-1)+NDiskServersToBuy(year-1)*DiskServerSize(year-1) -fDisk->RetiredVolume(year); printf("%10.3f",x); } printf("\n"); printf("%-20s","Avail FS"); for (int year=2002; year<2011; year++) { float x= fDisk->NServers(year); printf("%10.3f",x); } printf("\n"); printf("%-30s","Volume to buy"); for (int year=2003; year<2011; year++) { printf("%10.3f",DiskVolumeToBuy(year)); } printf("\n"); printf("%-30s","Volume to retire"); for (int year=2003; year<2011; year++) { vol = fDisk->RetiredVolume(year); printf("%10.3f",vol); } printf("\n"); printf("%-30s","N(servers) to buy"); for (int year=2003; year<2011; year++) { n_srv = NDiskServersToBuy(year); printf("%10i",n_srv); } printf("\n"); printf("%-30s","Fileserver size"); for (int year=2003; year<2011; year++) { printf("%10.3f",fDisk->UnitSize(year)); } printf("\n"); printf("%-30s","Aquired Units"); for (int year=2003; year<2011; year++) { printf("%10i",NDiskServersToBuy(year)); } printf("\n"); printf("%-30s","Disk Cost"); for (int year=2003; year<2011; year++) { printf("%10.3f",DiskCostProjections(year)); } printf("\n"); return 0; } //_____________________________________________________________________________ int TCompModel::PrintTapeProjections() { } //_____________________________________________________________________________ int TCompModel::PrintNEvents() { printf("%-20s","fiscal year"); for (int year=2002; year<2011; year++) { printf("%10i",year); } printf("\n"); printf("%-20s","N(L3 pred)"); for (int year=2002; year<2011; year++) { float x= NL3Events(year)/1.e6; printf("%10.3f",x); } printf("\n"); printf("%-20s","N(CSL pred)"); for (int year=2002; year<2011; year++) { float x= NCslEvents(year)/1.e6; printf("%10.3f",x); } printf("\n"); printf("%-20s","N(CSL GR)"); for (int year=2002; year<2011; year++) { float x= fCdf->NCslEventsGR(year)/1e6; printf("%10.3f",x); } printf("\n"); return 0; } //_____________________________________________________________________________ int TCompModel::Print(const char* Name, int Model) { TString name = Name; name.ToUpper(); if (name == "HELP") { printf(" available printouts: \n disk_size, data_volume\n"); } else if (name == "DISK" ) PrintDiskProjections (); else if (name == "DATA_VOLUME") PrintDataVolume (); else if (name == "CPU" ) PrintCpuProjections (); else if (name == "TAPE" ) PrintTapeProjections (); else if (name == "NEVENTS" ) PrintNEvents (); return 0; }