#include "prova.h" string date_format(string date) { string ttime = date.substr(0, date.find("T")); size_t sz; int year = std::stoi(ttime.substr(0, ttime.find("-")), &sz); //cout << year << endl; string rem = ttime.substr(ttime.find("-")+1); //cout << rem << endl; int month = std::stoi(rem.substr(0, rem.find("-")), &sz); //cout << month << endl; rem = rem.substr(rem.find("-")+1); int day = stoi(rem, &sz); //cout << day << endl; std::tm tm {} ; tm.tm_year = year - 1900 ; tm.tm_mon = month - 1 ; tm.tm_mday = day ; std::string fmt = "%B %d, %Y" ; // long char buffer[128] ; std::strftime( buffer, sizeof(buffer), fmt.c_str(), std::addressof(tm) ) ; //cout << buffer << " dalla funzione" << endl; return buffer; } //=================================================================================== Analisi::Analisi(string TFileName) // mie modifiche Ignazio { xmi_ = 100 ; xma_ = 365 ; nBins_ = xma_-xmi_+1 ; TFileName_ = TFileName ; DaysRange_ = 7 ; addAll_ = false ; listaTipi_ ["data_" ] = 1 ; listaTipi_ ["stato_" ] = 1 ; listaTipi_ ["codice_regione_" ] = 1 ; listaTipi_ ["denominazione_regione_" ] = 1 ; listaTipi_ ["latitude_" ] = 1 ; listaTipi_ ["longitude_" ] = 1 ; listaTipi_ ["ricoverati_con_sintomi_" ] = 1 ; listaTipi_ ["terapia_intensiva_" ] = 1 ; listaTipi_ ["totale_ospedalizzati_" ] = 1 ; listaTipi_ ["isolamento_domiciliare_" ] = 1 ; listaTipi_ ["attualmente_positivi_" ] = kRed ; // infettivi listaTipi_ ["nuovi_attualmente_positivi_" ] = 1 ; listaTipi_ ["dimessi_guariti_" ] = 1 ; listaTipi_ ["deceduti_" ] = kBlack ; listaTipi_ ["totale_casi_" ] = kCyan ; listaTipi_ ["tamponi_" ] = 1 ; listaTipi_ ["rimossi_" ] = kBlue ; listaTipi_ ["nuovi_rimossi_" ] = kMagenta ; listaTipi_ ["nuovi_deceduti_" ] = kBlue+4 ; listaTipi_ ["deceduti_su_rimossi_" ] = kCyan+1 ; listaTipi_ ["infettivi_e_rimossi_" ] = kGreen+2 ; listaEstesaTipi_["data_" ] = "Data" ; listaEstesaTipi_["stato_" ] = "Stato" ; listaEstesaTipi_["codice_regione_" ] = "Codice Regione" ; listaEstesaTipi_["denominazione_regione_" ] = "Regione" ; listaEstesaTipi_["latitude_" ] = "Latitudine" ; listaEstesaTipi_["longitude_" ] = "Longitudine" ; listaEstesaTipi_["ricoverati_con_sintomi_" ] = "Ricoverati con sintomi" ; listaEstesaTipi_["terapia_intensiva_" ] = "Terapia intensiva" ; listaEstesaTipi_["totale_ospedalizzati_" ] = "Totale ospedalizzati" ; listaEstesaTipi_["isolamento_domiciliare_" ] = "In isolamento domiciliare"; listaEstesaTipi_["attualmente_positivi_" ] = "Infectious" ; listaEstesaTipi_["nuovi_attualmente_positivi_" ] = "New cases" ; listaEstesaTipi_["dimessi_guariti_" ] = "Healed" ; listaEstesaTipi_["deceduti_" ] = "Deceased" ; listaEstesaTipi_["totale_casi_" ] = "Total cases" ; listaEstesaTipi_["tamponi_" ] = "Numero tamponi effettuati"; listaEstesaTipi_["rimossi_" ] = "Removed" ; listaEstesaTipi_["nuovi_rimossi_" ] = "Daily Removed" ; listaEstesaTipi_["nuovi_deceduti_" ] = "Daily Deceased" ; listaEstesaTipi_["deceduti_su_rimossi_" ] = "Deceased/Removed" ; listaEstesaTipi_["infettivi_e_rimossi_" ] = "Infectious + Removed" ; TypesToAnalyse_.push_back("deceduti_"); TypesToAnalyse_.push_back("attualmente_positivi_"); TypesToAnalyse_.push_back("infettivi_e_rimossi_"); TypesToAnalyse_.push_back("rimossi_"); TypesToAnalyse_.push_back("nuovi_rimossi_"); TypesToAnalyse_.push_back("deceduti_su_rimossi_"); if(gSystem->AccessPathName((TString)TFileName_)) { cout << TFileName_ << " doesn't exist... exiting" << endl; return; } // file_ = new TFile(TFileName_.c_str()); file_ = TFile::Open((TString)TFileName_, "READ"); if ((!file_) || (file_->IsZombie())) {delete file_; return;} // just a precaution tree_ = (TTree*)file_->Get("branchRegione"); if (!tree_) {delete file_; return; // just a precaution cout << __LINE__ << "TTree not found!" << endl ; exit(-1); } // solo curiosità ******************************** cout << "file_->ls():" << endl; file_->ls(); cout << "TTree GetListOfBranches()" << endl; tree_->GetListOfBranches(); cout << "TTree Print()" << endl; tree_->Print(); //tree_->StartViewer(); // fine solo curiosità ************************** makeBranch() ; readTree(); return; } //=================================================================================== Analisi::~Analisi() { // cout << "distructor called!" << endl; if( ! hisMap_.empty()) for(sinMapDef_::iterator it=listaRegioni_.begin(); it!=listaRegioni_.end(); ++it) for(sinMapDef_::iterator jt=listaTipi_.begin(); jt!=listaTipi_.end(); ++jt) { delete hisMap_[it->first][jt->first]; } if( ! hisMoAvMap_.empty()) for(sinMapDef_::iterator it=listaRegioni_.begin(); it!=listaRegioni_.end(); ++it) for(sinMapDef_::iterator jt=listaTipi_.begin(); jt!=listaTipi_.end(); ++jt) { delete hisMoAvMap_[it->first][jt->first]; } if( ! dataVecMap_.empty()) for(sinMapDef_::iterator it=listaRegioni_.begin(); it!=listaRegioni_.end(); ++it) for(sinMapDef_::iterator jt=listaTipi_.begin(); jt!=listaTipi_.end(); ++jt) { delete dataVecMap_[it->first][jt->first]; } if( ! hisMapTotali_.empty()) for(ptrMapDef_::iterator jt=hisMapITA_.begin(); jt!=hisMapITA_.end(); ++jt) { delete hisMapTotali_[jt->first]; } if( ! hisMoAvMapTotali_.empty()) for(ptrMapDef_::iterator jt=hisMoAvMapITA_.begin(); jt!=hisMoAvMapITA_.end(); ++jt) { delete hisMoAvMapTotali_[jt->first]; } if( ! hisMapITA_.empty()) for(ptrMapDef_::iterator jt=hisMapITA_.begin(); jt!=hisMapITA_.end(); ++jt) { delete hisMapITA_[jt->first]; } if( ! hisMoAvMapITA_.empty()) for(ptrMapDef_::iterator jt=hisMoAvMapITA_.begin(); jt!=hisMoAvMapITA_.end(); ++jt) { delete hisMoAvMapITA_[jt->first]; } // cout << "distructor done!" << endl; } //==================================================================================== void Analisi::makeBranch(void) // mie modifiche Ignazio { // cout << __LINE__ << "] Making branch" << endl ; tree_->SetBranchAddress("data" ,&data_ ); tree_->SetBranchAddress("stato" ,&stato_ ); tree_->SetBranchAddress("codice_regione" ,&codice_regione_ ); tree_->SetBranchAddress("denominazione_regione" ,&denominazione_regione_ ); tree_->SetBranchAddress("latitude" ,&latitude_ ); tree_->SetBranchAddress("longitude" ,&longitude_ ); tree_->SetBranchAddress("ricoverati_con_sintomi" ,&ricoverati_con_sintomi_ ); tree_->SetBranchAddress("terapia_intensiva" ,&terapia_intensiva_ ); tree_->SetBranchAddress("totale_ospedalizzati" ,&totale_ospedalizzati_ ); tree_->SetBranchAddress("isolamento_domiciliare" ,&isolamento_domiciliare_ ); tree_->SetBranchAddress("totale_attualmente_positivi",&totale_attualmente_positivi_); tree_->SetBranchAddress("nuovi_attualmente_positivi" ,&nuovi_attualmente_positivi_ ); tree_->SetBranchAddress("dimessi_guariti" ,&dimessi_guariti_ ); tree_->SetBranchAddress("deceduti" ,&deceduti_ ); tree_->SetBranchAddress("totale_casi" ,&totale_casi_ ); tree_->SetBranchAddress("tamponi" ,&tamponi_ ); } //======================================================================================= void Analisi::readTree(void) { // cout << __LINE__ << "] Reading tree..." << endl; nentries_ = tree_->GetEntries(); //cout << __LINE__ << "] Totaledati trovati: " << nentries_ << endl ; // used later to get daily ******************************************************* sinMapDef_ lastRemoved; //= listaRegioni_; //Ignazio sinMapDef_ lastDeceased; //= listaRegioni_; //Ignazio //********************************************************************************* int bin = 0 ; for (Long64_t i=0; iGetEntry(i); mapData_[*data_][*denominazione_regione_]["ricoverati_con_sintomi_" ] = ricoverati_con_sintomi_ ; mapData_[*data_][*denominazione_regione_]["terapia_intensiva_" ] = terapia_intensiva_ ; mapData_[*data_][*denominazione_regione_]["totale_ospedalizzati_" ] = totale_ospedalizzati_ ; mapData_[*data_][*denominazione_regione_]["isolamento_domiciliare_" ] = isolamento_domiciliare_ ; mapData_[*data_][*denominazione_regione_]["attualmente_positivi_" ] = totale_attualmente_positivi_; mapData_[*data_][*denominazione_regione_]["nuovi_attualmente_positivi_" ] = nuovi_attualmente_positivi_ ; mapData_[*data_][*denominazione_regione_]["dimessi_guariti_" ] = dimessi_guariti_ ; mapData_[*data_][*denominazione_regione_]["deceduti_" ] = deceduti_ ; mapData_[*data_][*denominazione_regione_]["totale_casi_" ] = totale_casi_ ; mapData_[*data_][*denominazione_regione_]["tamponi_" ] = tamponi_ ; /******************************************************************************* cout << __LINE__ << "] " << *data_ << " Regione: " << *denominazione_regione_ << "\tdeceduti " << deceduti_ << endl; cout << __LINE__ << "] " << *data_ << " Regione: " << *denominazione_regione_ << "\tinfettivi " << totale_attualmente_positivi_ << endl ; ********************************************************************************/ rimossi_ = mapData_[*data_][*denominazione_regione_]["rimossi_"] = mapData_[*data_][*denominazione_regione_]["deceduti_"] + mapData_[*data_][*denominazione_regione_]["dimessi_guariti_"]; infettivi_e_rimossi_ = mapData_[*data_][*denominazione_regione_]["infettivi_e_rimossi_"] = totale_attualmente_positivi_ + rimossi_; nuovi_rimossi_ = mapData_[*data_][*denominazione_regione_]["nuovi_rimossi_"] = mapData_[*data_][*denominazione_regione_]["rimossi_"] - lastRemoved[*denominazione_regione_]; lastRemoved[*denominazione_regione_] = mapData_[*data_][*denominazione_regione_]["rimossi_"]; nuovi_deceduti_ = mapData_[*data_][*denominazione_regione_]["nuovi_deceduti_"] = mapData_[*data_][*denominazione_regione_]["deceduti_"] - lastDeceased[*denominazione_regione_]; lastDeceased[*denominazione_regione_] = mapData_[*data_][*denominazione_regione_]["deceduti_"]; listaRegioni_ [*denominazione_regione_] = 1 ; if( binMap_.find(*data_) == binMap_.end()) { bin++ ; // appena cominciano dati per un altro giorno... binMap_[*data_] = bin ; //...segna il numero ordinale di bin per quel giorno } } // end loop over Tree entries // cout << "readTree done!" << endl; tree_->ResetBranchAddresses(); int count = 1; map::iterator dt=binMap_.begin(); while(dt != binMap_.end() && count < xmi_) { dt++; count++; } string date = (*dt).first; xAxisTitle_ = "Days from " + date_format(date); cout << "\nAnalysis set from " << date_format(date) << endl; cout << "Data as at " << date_format((--binMap_.end())->first) << "\n" << endl; } //=======================================================================