bool ListReaderH5::ReadAux (const std::vector<std::pair<int, int> >& a_vIdx, T* a_) const { // set up the indices to read the portion of the boundary conditions that // we are going to read for (size_t i=0; i<a_vIdx.size(); i++) { std::pair<int, int> myPair(0, 1); VEC_INT_PAIR indices(3, myPair); indices.at(0).first = a_vIdx.at(i).first; indices.at(0).second = 1; indices.at(1).second = m_nRows; indices.at(2).first = m_stress - 1; indices.at(2).second = 1; CStr str(m_path); str += "/"; str += PROPERTY; H5DataSetReader r(m_file, str, indices); r.AllowTypeConversions(true); std::vector<Real> vDat; if (!r.GetData(vDat)) { ASSERT(0); return false; } int index = m_nFields - m_nAuxFields + a_vIdx.at(i).second; for (size_t j=0; j<vDat.size(); j++) { a_[j*m_nFields+index] = (T)vDat.at(j); } } return true; } // ListReaderH5::ReadAux
bool ListReaderH5::GetIface (T *a_) const { std::pair<int, int> myPair(0, m_nRows); VEC_INT_PAIR indices(1, myPair); CStr str(m_path); str += "/"; str += IFACE; int auxIdx(GetAuxIdx("iface")); if (auxIdx < 0) { auxIdx = 0; } int index; index = m_nFields - m_nAuxFields + auxIdx - m_nCbcFields; H5DataSetReader r(m_file, str, indices); std::vector<int> iface(m_nRows, 0); r.GetData(&iface[0], iface.size()); for (size_t i=0; i<iface.size(); i++) { a_[i*m_nFields+index] = (T)iface.at(i); } return true; } // ListReaderH5::GetIface
bool ListReaderH5::GetCellKIJ (T *a_) const { std::pair<int, int> myPair(0, m_nRows); VEC_INT_PAIR indices(1, myPair); CStr str(m_path); str += "/"; str += CELLIDS; H5DataSetReader r(m_file, str, indices); CellIdToIJK g(m_nGridRows, m_nGridCols); std::vector<int> cellIds(m_nRows, 0); if (!r.GetData(&cellIds[0], cellIds.size())) return false; for (size_t i=0; i<cellIds.size(); i++) { a_[i*m_nFields] = (T)g.KFromId(cellIds.at(i)); a_[i*m_nFields+1] = (T)g.IFromId(cellIds.at(i)); a_[i*m_nFields+2] = (T)g.JFromId(cellIds.at(i)); } return true; } // ListReaderH5::GetCellKIJ
//------------------------------------------------------------------------------ /// \brief //------------------------------------------------------------------------------ bool ListReaderH5::GetVersion () { // get the file version std::pair<int, int> myPair(0, 1); VEC_INT_PAIR indices(1, myPair); H5DataSetReader r(m_file, "MFH5 Version", indices); if (r.DataSetExists()) return(r.GetData(&m_fileVersion, 1)); else return false; } // ListReaderH5::GetVersion
//------------------------------------------------------------------------------ /// \brief Gets the factor (a multiplier) associated with this BC. //------------------------------------------------------------------------------ bool ListReaderH5::GetFactorVer1 (std::vector<Real> &a_) const { std::pair<int, int> myPair(0, m_nRows); VEC_INT_PAIR indices(1, myPair); CStr str(m_path); str += "/"; str += FACTOR; H5DataSetReader r(m_file, str, indices); r.AllowTypeConversions(true); return (r.GetData(a_)); } // ListReaderH5::GetFactorVer1
bool ListReaderH5::GetStressData (T *a_) const { // set up the indices to read the portion of the boundary conditions that // we are going to read int nVals = m_nFields - m_nAuxFields - 3 - m_ial; std::pair<int, int> myPair(0, nVals); VEC_INT_PAIR indices(3, myPair); indices.at(1).second = m_nRows; indices.at(2).first = m_stress - 1; indices.at(2).second = 1; CStr str(m_path), parType; str += "/"; str += PROPERTY; H5DataSetReader r(m_file, str, indices); r.AllowTypeConversions(true); std::vector<Real> d, fact; r.GetData(d); GetFactor(fact, 0); Parameters::ParTypeFromH5Path(m_path, parType); if (Parameters::CheckListSubstituteOk()) { Parameters::SubstituteList(d, fact, parType); } else if (parType == "STR") { mfLibExp_StrCondFact(&fact[0], (int)fact.size()); } try { for (int i=0; i<m_nRows; i++) { for (int j=0; j<nVals; j++) { a_[i*m_nFields+3+j] = (T)(d.at(j*m_nRows+i)); } //ASSERT(_CrtCheckMemory()); } } catch (std::out_of_range) { return false; } return true; } // ListReaderH5::GetStressData
//------------------------------------------------------------------------------ /// \brief Gets the factor (a multiplier) associated with this BC. //------------------------------------------------------------------------------ bool ListReaderH5::GetFactor (std::vector<Real> &a_, const int a_sheadFact) const { if (m_fileVersion == 1.0) return(GetFactorVer1(a_)); // factors are now stored with the bcs per stress period // set up the indices to read the portion of the boundary conditions that // we are going to read //m_nFields - size of array from MODFLOW //m_nAuxFields - number of AUX variables //3 - k, i, j //m_ial - variable from MODFLOW int nVals = m_nFields - m_nAuxFields - 3 - m_ial; std::pair<int, int> myPair(0, 1); VEC_INT_PAIR indices(3, myPair); indices.at(0).first = nVals; indices.at(0).second = GetNumFactors(); indices.at(1).second = m_nRows; indices.at(2).first = m_stress - 1; indices.at(2).second = 1; if (1 == a_sheadFact) { // just reading SHEADFACT indices.at(0).second = 1; } else if (2 == a_sheadFact) { // just reading EHEADFACT indices.at(0).first++; indices.at(0).second = 1; } CStr str(m_path); str += "/"; str += PROPERTY; H5DataSetReader r(m_file, str, indices); r.AllowTypeConversions(true); return (r.GetData(a_)); } // ListReaderH5::GetFactor
//------------------------------------------------------------------------------ /// \brief Reads 3. Data: ITMP /// \brief Reads 4. Data: WELLID Qdes {CapMult} {Cprime} {xyz} //------------------------------------------------------------------------------ void ProcessorMNW2::impl::ReadStressPeriods (std::fstream& a_is, std::fstream& a_os) { CStr str; std::string line; EReadAsciiFile e; e.UseExceptions(); while (!a_is.bad()) { std::getline(a_is, line); if (line.empty()) { return; } int ITMP; a_os << line << "\n"; e.SetLine(line.c_str()); e.ReadData(ITMP); if (ITMP < 1) continue; std::getline(a_is, line); e.SetLine(line.c_str()); e.ReadData(str); if ("GMS_HDF5_01" == str) { CStr fname, path; int sp; e.ReadData(fname); e.ReadData(path); path += "/07. Property"; e.ReadData(sp); std::pair<int, int> myPair(0,1); VEC_INT_PAIR indices(3, myPair); indices[0].second = numMnw2Prop(); indices[1].second = m_MNWMAX; indices[2].first = sp - 1; H5DataSetReader r(fname, path, indices); CAR_DBL2D vals; vals.SetSize(MNW2::NPROP, m_MNWMAX, 0); if (!r.GetData(&vals[0][0], MNW2::NPROP*m_MNWMAX)) { ErrorStack::Get().PutError("Unable to read MNW2 hdf5 data."); throw ioError(""); } for (int i = 0; i<m_MNWMAX; i++) { if (vals.at(MNW2::ACTIVE, i) != 0) { // this well is active // 4a. Data: WELLID Qdes {CapMult} {Cprime} {xyz} CStr ln; ln.Format("'%s' %s", m_wells.at(i).m_WELLID, STR(vals.at(MNW2::QDES, i))); if (m_wells.at(i).m_PUMPCAP > 0) { ln += " "; ln += STR(vals.at(MNW2::CAPMULT, i)); } // don't write Cprime // get AUX for (int j = 0; j<m_nAUX; j++) { ln += " "; ln += STR(vals.at(MNW2::AUX_0+j, i)); } a_os << ln << "\n"; if (m_wells.at(i).m_Qlimit < 0) { double QCUT = vals.at(MNW2::QCUT, i); ln.Format("%s %s", STR(vals.at(MNW2::HLIM, i)), STR(QCUT)); if (QCUT != 0) { CStr ln2; ln2.Format(" %s %s", STR(vals.at(MNW2::QFRCMN, i)), STR(vals.at(MNW2::QFRCMX, i))); ln += ln2; } a_os << ln << "\n"; } } } } } } // ProcessorMNW2::impl::ReadStressPeriods
void ana(){ //**************************************Preset************************************************** vector<string> vec_tree; vector< pair<string,string> > vec_branch_tree; TObjArray* list_hist = new TObjArray(0); //Ignore me! I am just a separator! string file_tuple_name = "root.d02kpi.660b.ValidDkpiAlg.root"; string file_hist_name = "hist_root.d02kpi.660b.ValidDkpiAlg.root"; vec_tree.push_back( "vxyz" ); pair<string,string> pair_vxyz_vx0( "vxyz", "vx0" ); vec_branch_tree.push_back( pair_vxyz_vx0 ); pair<string,string> pair_vxyz_vy0( "vxyz", "vy0" ); vec_branch_tree.push_back( pair_vxyz_vy0 ); pair<string,string> pair_vxyz_vz0( "vxyz", "vz0" ); vec_branch_tree.push_back( pair_vxyz_vz0 ); pair<string,string> pair_vxyz_vr0( "vxyz", "vr0" ); vec_branch_tree.push_back( pair_vxyz_vr0 ); pair<string,string> pair_vxyz_theta( "vxyz", "theta" ); vec_branch_tree.push_back( pair_vxyz_theta ); vec_tree.push_back( "D0tokpi" ); pair<string,string> pair_D0tokpi_pkmx( "D0tokpi", "pkmx" ); vec_branch_tree.push_back( pair_D0tokpi_pkmx ); pair<string,string> pair_D0tokpi_pkmy( "D0tokpi", "pkmy" ); vec_branch_tree.push_back( pair_D0tokpi_pkmy ); pair<string,string> pair_D0tokpi_pkmz( "D0tokpi", "pkmz" ); vec_branch_tree.push_back( pair_D0tokpi_pkmz ); pair<string,string> pair_D0tokpi_pkme( "D0tokpi", "pkme" ); vec_branch_tree.push_back( pair_D0tokpi_pkme ); pair<string,string> pair_D0tokpi_ppipx( "D0tokpi", "ppipx" ); vec_branch_tree.push_back( pair_D0tokpi_ppipx ); pair<string,string> pair_D0tokpi_ppipy( "D0tokpi", "ppipy" ); vec_branch_tree.push_back( pair_D0tokpi_ppipy ); pair<string,string> pair_D0tokpi_ppipz( "D0tokpi", "ppipz" ); vec_branch_tree.push_back( pair_D0tokpi_ppipz ); pair<string,string> pair_D0tokpi_ppipe( "D0tokpi", "ppipe" ); vec_branch_tree.push_back( pair_D0tokpi_ppipe ); pair<string,string> pair_D0tokpi_Mbc( "D0tokpi", "Mbc" ); vec_branch_tree.push_back( pair_D0tokpi_Mbc ); pair<string,string> pair_D0tokpi_deltE( "D0tokpi", "deltE" ); vec_branch_tree.push_back( pair_D0tokpi_deltE ); pair<string,string> pair_D0tokpi_massD0( "D0tokpi", "massD0" ); vec_branch_tree.push_back( pair_D0tokpi_massD0 ); vec_tree.push_back( "D0tokpi_af1C" ); pair<string,string> pair_D0tokpi_af1C_pkmx( "D0tokpi_af1C", "pkmx" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_pkmx ); pair<string,string> pair_D0tokpi_af1C_pkmy( "D0tokpi_af1C", "pkmy" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_pkmy ); pair<string,string> pair_D0tokpi_af1C_pkmz( "D0tokpi_af1C", "pkmz" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_pkmz ); pair<string,string> pair_D0tokpi_af1C_pkme( "D0tokpi_af1C", "pkme" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_pkme ); pair<string,string> pair_D0tokpi_af1C_ppipx( "D0tokpi_af1C", "ppipx" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_ppipx ); pair<string,string> pair_D0tokpi_af1C_ppipy( "D0tokpi_af1C", "ppipy" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_ppipy ); pair<string,string> pair_D0tokpi_af1C_ppipz( "D0tokpi_af1C", "ppipz" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_ppipz ); pair<string,string> pair_D0tokpi_af1C_ppipe( "D0tokpi_af1C", "ppipe" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_ppipe ); pair<string,string> pair_D0tokpi_af1C_Mbc( "D0tokpi_af1C", "Mbc" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_Mbc ); pair<string,string> pair_D0tokpi_af1C_deltE( "D0tokpi_af1C", "deltE" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_deltE ); pair<string,string> pair_D0tokpi_af1C_massD0( "D0tokpi_af1C", "massD0" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_massD0 ); pair<string,string> pair_D0tokpi_af1C_chi2( "D0tokpi_af1C", "chi2" ); vec_branch_tree.push_back( pair_D0tokpi_af1C_chi2 ); //Ignore me! I am just a separator! TFile* myFile = new TFile ( file_tuple_name.c_str() ); if ( myFile -> IsZombie() ){ std::cout<<"Cannot create myFile!!! "<<std::endl; std::cout<<"Something is wrong with file :"<<std::endl; exit(EXIT_FAILURE); } //**************************************Precheck************************************************ TCollection* myCol = (TCollection*) myFile -> GetListOfKeys(); //First of all, make sure every TTree in the card can be found in myFile. bool isEveryOneOK = true; for ( int i = 0; i < vec_branch_tree.size(); i++ ){ pair<string,string> myPair = vec_branch_tree[i]; string name_tree = myPair.first; string name_branch = myPair.second; TObject* obj_from_key_find = myCol -> FindObject( name_tree.c_str() ); if ( obj_from_key_find == 0 ){ std::cout<<"TTree "<<setiosflags(ios::left)<<setw(20)<<name_tree<<" can not be found in myFile !!!"<<std::endl; isEveryOneOK = false; } else{ TKey* key_find = dynamic_cast<TKey*> ( obj_from_key_find ); if ( key_find == NULL ){ std::cout<<"Cannot convert obj_from_key_find to key_find "<<std::endl; exit(EXIT_FAILURE); } TObject* obj_find = key_find -> ReadObj(); if ( obj_find -> InheritsFrom("TTree") ){ TTree* tree_find = dynamic_cast<TTree*> ( obj_find ); if ( tree_find == NULL ){ std::cout<<"Cannot convert "<<name_tree<<" to TTree "<<std::endl; exit(EXIT_FAILURE); } TCollection* col_tree_find = dynamic_cast<TCollection*> ( tree_find -> GetListOfBranches() ); if ( col_tree_find == NULL ){ std::cout<<"Cannot convert col of "<<name_tree<<" to TCollection "<<std::endl; exit(EXIT_FAILURE); } TObject* it_branch_find = col_tree_find -> FindObject( name_branch.c_str() ); if ( it_branch_find == 0 ){ std::cout<<"TBranch "<<setiosflags(ios::left)<<setw(20)<<name_branch<<" can not be found in "<<name_tree<<" !!!"<<std::endl; isEveryOneOK = false; } else{ if ( ! it_branch_find -> InheritsFrom("TBranch") ){ std::cout<<setiosflags(ios::left)<<setw(20)<<name_branch<<" in "<<setiosflags(ios::left)<<setw(20)<<name_tree<<" is not a TBranch!!!"<<std::endl; isEveryOneOK = false; } } } else{ std::cout<<setiosflags(ios::left)<<setw(20)<<name_tree<<" in myFile is not a TTree!!!"<<std::endl; obj_find -> Print(); isEveryOneOK = false; } } } if ( !isEveryOneOK ){ exit(EXIT_FAILURE); } //Secondly, Check objs within myFile. Output info. //Plus, if there is TFolder inside, keep them in new hist_file TIter iter_tree( myCol ); TKey* key_tree; while ( key_tree = (TKey*) iter_tree() ){ TObject* obj_tree = key_tree -> ReadObj(); string name_obj_tree = obj_tree -> GetName(); if ( obj_tree -> InheritsFrom("TTree") ){ vector<string>::iterator result = std::find( vec_tree.begin(), vec_tree.end(), name_obj_tree ); if ( result == vec_tree.end() ){ std::cout<<"TTree "<<setiosflags(ios::left)<<setw(20)<<name_obj_tree<<" in myFile is not included in the card:"<<std::endl; } else{ TTree* myTree = dynamic_cast<TTree*> ( obj_tree ); if ( myTree == NULL ){ std::cout<<"Cannot convert obj_tree to TTree "<<std::endl; exit(EXIT_FAILURE); } TCollection* col_tree = dynamic_cast<TCollection*> ( myTree -> GetListOfBranches() ); if ( col_tree == NULL ){ std::cout<<"Cannot convert list of obj_tree to TCollection "<<std::endl; exit(EXIT_FAILURE); } TIter iter_branch( col_tree ); TObject* obj_branch; while ( obj_branch = iter_branch() ){ string name_obj_branch = obj_branch -> GetName(); if ( obj_branch -> InheritsFrom("TBranch") ){ pair<string,string> myPair( name_obj_tree, name_obj_branch ); vector< pair<string,string> >::iterator result = std::find( vec_branch_tree.begin(), vec_branch_tree.end(), myPair ); if ( result == vec_branch_tree.end() ){ std::cout<<"TBranch "<<setiosflags(ios::left)<<setw(20)<<name_obj_branch<<" in "<<setiosflags(ios::left)<<setw(20)<<name_obj_tree<<" is not included in the card:"<<std::endl; } } else{ std::cout<<setiosflags(ios::left)<<setw(20)<<name_obj_branch<<" in "<<setiosflags(ios::left)<<setw(20)<<name_obj_tree<<"is not a TBranch!!!"<<std::endl; } } } } else if ( obj_tree -> InheritsFrom("TFolder") ){ std::cout<<setiosflags(ios::left)<<setw(20)<<name_obj_tree<<" in myFile is a TFolder!!!"<<std::endl; TFolder* myFolder = dynamic_cast<TFolder*> ( obj_tree ); list_hist -> Add( myFolder ); } else{ std::cout<<setiosflags(ios::left)<<setw(20)<<name_obj_tree<<" in myFile does not inherit from a TTree!!!"<<std::endl; } } myFile -> Close(); //*********************************Set hist and branch************************************************ //Ignore me! I am just a separator! TChain* chain_vxyz = new TChain( "vxyz" ); TChain* chain_D0tokpi = new TChain( "D0tokpi" ); TChain* chain_D0tokpi_af1C = new TChain( "D0tokpi_af1C" ); chain_vxyz -> Add( file_tuple_name.c_str() ); chain_D0tokpi -> Add( file_tuple_name.c_str() ); chain_D0tokpi_af1C -> Add( file_tuple_name.c_str() ); TFolder* folder_vxyz = new TFolder( "vxyz", "vxyz" ); TFolder* folder_D0tokpi = new TFolder( "D0tokpi", "D0tokpi" ); TFolder* folder_D0tokpi_af1C = new TFolder( "D0tokpi_af1C", "D0tokpi_af1C" ); list_hist -> Add( folder_vxyz ); list_hist -> Add( folder_D0tokpi ); list_hist -> Add( folder_D0tokpi_af1C ); Double_t vxyz_vx0; Double_t vxyz_vy0; Double_t vxyz_vz0; Double_t vxyz_vr0; Double_t vxyz_theta; chain_vxyz -> SetBranchAddress( "vx0", &vxyz_vx0 ); chain_vxyz -> SetBranchAddress( "vy0", &vxyz_vy0 ); chain_vxyz -> SetBranchAddress( "vz0", &vxyz_vz0 ); chain_vxyz -> SetBranchAddress( "vr0", &vxyz_vr0 ); chain_vxyz -> SetBranchAddress( "theta", &vxyz_theta ); TH1D* hist_vxyz_vx0 = new TH1D( "vxyz_vx0", "vxyz_vx0", 5000, -188.197, 79.31 ); TH1D* hist_vxyz_vy0 = new TH1D( "vxyz_vy0", "vxyz_vy0", 5000, -101.723, 169.299 ); TH1D* hist_vxyz_vz0 = new TH1D( "vxyz_vz0", "vxyz_vz0", 5000, -5528.16, 1703.5 ); TH1D* hist_vxyz_vr0 = new TH1D( "vxyz_vr0", "vxyz_vr0", 5000, 1.54311e-06, 253.141 ); TH1D* hist_vxyz_theta = new TH1D( "vxyz_theta", "vxyz_theta", 5000, 0.00477202, 3.1413 ); TH2D* hist_vxyz_vx0_vy0 = new TH2D( "vxyz_vx0_vy0", "vxyz_vx0_vy0", 100, -188.197, 79.31, 100, -101.723, 169.299 ); folder_vxyz -> Add( hist_vxyz_vx0 ); folder_vxyz -> Add( hist_vxyz_vy0 ); folder_vxyz -> Add( hist_vxyz_vz0 ); folder_vxyz -> Add( hist_vxyz_vr0 ); folder_vxyz -> Add( hist_vxyz_theta ); folder_vxyz -> Add( hist_vxyz_vx0_vy0 ); Long64_t nEvent_vxyz = chain_vxyz -> GetEntries(); for ( Long64_t iEvent = 0; iEvent < nEvent_vxyz; iEvent++ ){ chain_vxyz -> GetEntry( iEvent ); hist_vxyz_vx0 -> Fill( vxyz_vx0 ); hist_vxyz_vy0 -> Fill( vxyz_vy0 ); hist_vxyz_vz0 -> Fill( vxyz_vz0 ); hist_vxyz_vr0 -> Fill( vxyz_vr0 ); hist_vxyz_theta -> Fill( vxyz_theta ); hist_vxyz_vx0_vy0 -> Fill( vxyz_vx0, vxyz_vy0 ); } Double_t D0tokpi_pkmx; Double_t D0tokpi_pkmy; Double_t D0tokpi_pkmz; Double_t D0tokpi_pkme; Double_t D0tokpi_ppipx; Double_t D0tokpi_ppipy; Double_t D0tokpi_ppipz; Double_t D0tokpi_ppipe; Double_t D0tokpi_Mbc; Double_t D0tokpi_deltE; Double_t D0tokpi_massD0; chain_D0tokpi -> SetBranchAddress( "pkmx", &D0tokpi_pkmx ); chain_D0tokpi -> SetBranchAddress( "pkmy", &D0tokpi_pkmy ); chain_D0tokpi -> SetBranchAddress( "pkmz", &D0tokpi_pkmz ); chain_D0tokpi -> SetBranchAddress( "pkme", &D0tokpi_pkme ); chain_D0tokpi -> SetBranchAddress( "ppipx", &D0tokpi_ppipx ); chain_D0tokpi -> SetBranchAddress( "ppipy", &D0tokpi_ppipy ); chain_D0tokpi -> SetBranchAddress( "ppipz", &D0tokpi_ppipz ); chain_D0tokpi -> SetBranchAddress( "ppipe", &D0tokpi_ppipe ); chain_D0tokpi -> SetBranchAddress( "Mbc", &D0tokpi_Mbc ); chain_D0tokpi -> SetBranchAddress( "deltE", &D0tokpi_deltE ); chain_D0tokpi -> SetBranchAddress( "massD0", &D0tokpi_massD0 ); TH1D* hist_D0tokpi_pkmx = new TH1D( "D0tokpi_pkmx", "D0tokpi_pkmx", 5000, -2.94642, 13.0648 ); TH1D* hist_D0tokpi_pkmy = new TH1D( "D0tokpi_pkmy", "D0tokpi_pkmy", 5000, -50.7721, 9.92379 ); TH1D* hist_D0tokpi_pkmz = new TH1D( "D0tokpi_pkmz", "D0tokpi_pkmz", 5000, -7.47541, 7.2599 ); TH1D* hist_D0tokpi_pkme = new TH1D( "D0tokpi_pkme", "D0tokpi_pkme", 5000, 0.502843, 52.6912 ); TH1D* hist_D0tokpi_ppipx = new TH1D( "D0tokpi_ppipx", "D0tokpi_ppipx", 5000, -1.1023, 1.15463 ); TH1D* hist_D0tokpi_ppipy = new TH1D( "D0tokpi_ppipy", "D0tokpi_ppipy", 5000, -2.31096, 1.28847 ); TH1D* hist_D0tokpi_ppipz = new TH1D( "D0tokpi_ppipz", "D0tokpi_ppipz", 5000, -1.48987, 2.37987 ); TH1D* hist_D0tokpi_ppipe = new TH1D( "D0tokpi_ppipe", "D0tokpi_ppipe", 5000, 0.151015, 2.66215 ); TH1D* hist_D0tokpi_Mbc = new TH1D( "D0tokpi_Mbc", "D0tokpi_Mbc", 5000, 0.343962, 1.8856 ); TH1D* hist_D0tokpi_deltE = new TH1D( "D0tokpi_deltE", "D0tokpi_deltE", 5000, -51.0678, 1.17004 ); TH1D* hist_D0tokpi_massD0 = new TH1D( "D0tokpi_massD0", "D0tokpi_massD0", 5000, 0.634185, 5.00042 ); TH2D* hist_D0tokpi_pkmx_pkmy = new TH2D( "D0tokpi_pkmx_pkmy", "D0tokpi_pkmx_pkmy", 100, -2.94642, 13.0648, 100, -50.7721, 9.92379 ); TH2D* hist_D0tokpi_ppipx_ppipy = new TH2D( "D0tokpi_ppipx_ppipy", "D0tokpi_ppipx_ppipy", 100, -1.1023, 1.15463, 100, -2.31096, 1.28847 ); TH2D* hist_D0tokpi_pkme_deltE = new TH2D( "D0tokpi_pkme_deltE", "D0tokpi_pkme_deltE", 100, 0.502843, 52.6912, 100, -51.0678, 1.17004 ); TH2D* hist_D0tokpi_ppipe_deltE = new TH2D( "D0tokpi_ppipe_deltE", "D0tokpi_ppipe_deltE", 100, 0.151015, 2.66215, 100, -51.0678, 1.17004 ); folder_D0tokpi -> Add( hist_D0tokpi_pkmx ); folder_D0tokpi -> Add( hist_D0tokpi_pkmy ); folder_D0tokpi -> Add( hist_D0tokpi_pkmz ); folder_D0tokpi -> Add( hist_D0tokpi_pkme ); folder_D0tokpi -> Add( hist_D0tokpi_ppipx ); folder_D0tokpi -> Add( hist_D0tokpi_ppipy ); folder_D0tokpi -> Add( hist_D0tokpi_ppipz ); folder_D0tokpi -> Add( hist_D0tokpi_ppipe ); folder_D0tokpi -> Add( hist_D0tokpi_Mbc ); folder_D0tokpi -> Add( hist_D0tokpi_deltE ); folder_D0tokpi -> Add( hist_D0tokpi_massD0 ); folder_D0tokpi -> Add( hist_D0tokpi_pkmx_pkmy ); folder_D0tokpi -> Add( hist_D0tokpi_ppipx_ppipy ); folder_D0tokpi -> Add( hist_D0tokpi_pkme_deltE ); folder_D0tokpi -> Add( hist_D0tokpi_ppipe_deltE ); Long64_t nEvent_D0tokpi = chain_D0tokpi -> GetEntries(); for ( Long64_t iEvent = 0; iEvent < nEvent_D0tokpi; iEvent++ ){ chain_D0tokpi -> GetEntry( iEvent ); hist_D0tokpi_pkmx -> Fill( D0tokpi_pkmx ); hist_D0tokpi_pkmy -> Fill( D0tokpi_pkmy ); hist_D0tokpi_pkmz -> Fill( D0tokpi_pkmz ); hist_D0tokpi_pkme -> Fill( D0tokpi_pkme ); hist_D0tokpi_ppipx -> Fill( D0tokpi_ppipx ); hist_D0tokpi_ppipy -> Fill( D0tokpi_ppipy ); hist_D0tokpi_ppipz -> Fill( D0tokpi_ppipz ); hist_D0tokpi_ppipe -> Fill( D0tokpi_ppipe ); hist_D0tokpi_Mbc -> Fill( D0tokpi_Mbc ); hist_D0tokpi_deltE -> Fill( D0tokpi_deltE ); hist_D0tokpi_massD0 -> Fill( D0tokpi_massD0 ); hist_D0tokpi_pkmx_pkmy -> Fill( D0tokpi_pkmx, D0tokpi_pkmy ); hist_D0tokpi_ppipx_ppipy -> Fill( D0tokpi_ppipx, D0tokpi_ppipy ); hist_D0tokpi_pkme_deltE -> Fill( D0tokpi_pkme, D0tokpi_deltE ); hist_D0tokpi_ppipe_deltE -> Fill( D0tokpi_ppipe, D0tokpi_deltE ); } Double_t D0tokpi_af1C_pkmx; Double_t D0tokpi_af1C_pkmy; Double_t D0tokpi_af1C_pkmz; Double_t D0tokpi_af1C_pkme; Double_t D0tokpi_af1C_ppipx; Double_t D0tokpi_af1C_ppipy; Double_t D0tokpi_af1C_ppipz; Double_t D0tokpi_af1C_ppipe; Double_t D0tokpi_af1C_Mbc; Double_t D0tokpi_af1C_deltE; Double_t D0tokpi_af1C_massD0; Double_t D0tokpi_af1C_chi2; chain_D0tokpi_af1C -> SetBranchAddress( "pkmx", &D0tokpi_af1C_pkmx ); chain_D0tokpi_af1C -> SetBranchAddress( "pkmy", &D0tokpi_af1C_pkmy ); chain_D0tokpi_af1C -> SetBranchAddress( "pkmz", &D0tokpi_af1C_pkmz ); chain_D0tokpi_af1C -> SetBranchAddress( "pkme", &D0tokpi_af1C_pkme ); chain_D0tokpi_af1C -> SetBranchAddress( "ppipx", &D0tokpi_af1C_ppipx ); chain_D0tokpi_af1C -> SetBranchAddress( "ppipy", &D0tokpi_af1C_ppipy ); chain_D0tokpi_af1C -> SetBranchAddress( "ppipz", &D0tokpi_af1C_ppipz ); chain_D0tokpi_af1C -> SetBranchAddress( "ppipe", &D0tokpi_af1C_ppipe ); chain_D0tokpi_af1C -> SetBranchAddress( "Mbc", &D0tokpi_af1C_Mbc ); chain_D0tokpi_af1C -> SetBranchAddress( "deltE", &D0tokpi_af1C_deltE ); chain_D0tokpi_af1C -> SetBranchAddress( "massD0", &D0tokpi_af1C_massD0 ); chain_D0tokpi_af1C -> SetBranchAddress( "chi2", &D0tokpi_af1C_chi2 ); TH1D* hist_D0tokpi_af1C_pkmx = new TH1D( "D0tokpi_af1C_pkmx", "D0tokpi_af1C_pkmx", 5000, -4.29693, 4.58405 ); TH1D* hist_D0tokpi_af1C_pkmy = new TH1D( "D0tokpi_af1C_pkmy", "D0tokpi_af1C_pkmy", 5000, -8.45895, 3.70228 ); TH1D* hist_D0tokpi_af1C_pkmz = new TH1D( "D0tokpi_af1C_pkmz", "D0tokpi_af1C_pkmz", 5000, -3.91267, 2.07956 ); TH1D* hist_D0tokpi_af1C_pkme = new TH1D( "D0tokpi_af1C_pkme", "D0tokpi_af1C_pkme", 5000, 0.709383, 8.79569 ); TH1D* hist_D0tokpi_af1C_ppipx = new TH1D( "D0tokpi_af1C_ppipx", "D0tokpi_af1C_ppipx", 5000, -1.08022, 1.01792 ); TH1D* hist_D0tokpi_af1C_ppipy = new TH1D( "D0tokpi_af1C_ppipy", "D0tokpi_af1C_ppipy", 5000, -1.09525, 1.05434 ); TH1D* hist_D0tokpi_af1C_ppipz = new TH1D( "D0tokpi_af1C_ppipz", "D0tokpi_af1C_ppipz", 5000, -1.83448, 1.29498 ); TH1D* hist_D0tokpi_af1C_ppipe = new TH1D( "D0tokpi_af1C_ppipe", "D0tokpi_af1C_ppipe", 5000, 0.191384, 1.93619 ); TH1D* hist_D0tokpi_af1C_Mbc = new TH1D( "D0tokpi_af1C_Mbc", "D0tokpi_af1C_Mbc", 5000, 0.241368, 1.8858 ); TH1D* hist_D0tokpi_af1C_deltE = new TH1D( "D0tokpi_af1C_deltE", "D0tokpi_af1C_deltE", 5000, -7.17389, 0.0209507 ); TH1D* hist_D0tokpi_af1C_massD0 = new TH1D( "D0tokpi_af1C_massD0", "D0tokpi_af1C_massD0", 5000, 1.86484, 1.86485 ); TH1D* hist_D0tokpi_af1C_chi2 = new TH1D( "D0tokpi_af1C_chi2", "D0tokpi_af1C_chi2", 5000, 9.11257e-10, 199.496 ); TH2D* hist_D0tokpi_af1C_pkmx_pkmy = new TH2D( "D0tokpi_af1C_pkmx_pkmy", "D0tokpi_af1C_pkmx_pkmy", 100, -4.29693, 4.58405, 100, -8.45895, 3.70228 ); TH2D* hist_D0tokpi_af1C_ppipx_ppipy = new TH2D( "D0tokpi_af1C_ppipx_ppipy", "D0tokpi_af1C_ppipx_ppipy", 100, -1.08022, 1.01792, 100, -1.09525, 1.05434 ); TH2D* hist_D0tokpi_af1C_pkme_deltE = new TH2D( "D0tokpi_af1C_pkme_deltE", "D0tokpi_af1C_pkme_deltE", 100, 0.709383, 8.79569, 100, -7.17389, 0.0209507 ); TH2D* hist_D0tokpi_af1C_ppipe_deltE = new TH2D( "D0tokpi_af1C_ppipe_deltE", "D0tokpi_af1C_ppipe_deltE", 100, 0.191384, 1.93619, 100, -7.17389, 0.0209507 ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkmx ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkmy ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkmz ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkme ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipx ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipy ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipz ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipe ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_Mbc ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_deltE ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_massD0 ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_chi2 ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkmx_pkmy ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipx_ppipy ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_pkme_deltE ); folder_D0tokpi_af1C -> Add( hist_D0tokpi_af1C_ppipe_deltE ); Long64_t nEvent_D0tokpi_af1C = chain_D0tokpi_af1C -> GetEntries(); for ( Long64_t iEvent = 0; iEvent < nEvent_D0tokpi_af1C; iEvent++ ){ chain_D0tokpi_af1C -> GetEntry( iEvent ); hist_D0tokpi_af1C_pkmx -> Fill( D0tokpi_af1C_pkmx ); hist_D0tokpi_af1C_pkmy -> Fill( D0tokpi_af1C_pkmy ); hist_D0tokpi_af1C_pkmz -> Fill( D0tokpi_af1C_pkmz ); hist_D0tokpi_af1C_pkme -> Fill( D0tokpi_af1C_pkme ); hist_D0tokpi_af1C_ppipx -> Fill( D0tokpi_af1C_ppipx ); hist_D0tokpi_af1C_ppipy -> Fill( D0tokpi_af1C_ppipy ); hist_D0tokpi_af1C_ppipz -> Fill( D0tokpi_af1C_ppipz ); hist_D0tokpi_af1C_ppipe -> Fill( D0tokpi_af1C_ppipe ); hist_D0tokpi_af1C_Mbc -> Fill( D0tokpi_af1C_Mbc ); hist_D0tokpi_af1C_deltE -> Fill( D0tokpi_af1C_deltE ); hist_D0tokpi_af1C_massD0 -> Fill( D0tokpi_af1C_massD0 ); hist_D0tokpi_af1C_chi2 -> Fill( D0tokpi_af1C_chi2 ); hist_D0tokpi_af1C_pkmx_pkmy -> Fill( D0tokpi_af1C_pkmx, D0tokpi_af1C_pkmy ); hist_D0tokpi_af1C_ppipx_ppipy -> Fill( D0tokpi_af1C_ppipx, D0tokpi_af1C_ppipy ); hist_D0tokpi_af1C_pkme_deltE -> Fill( D0tokpi_af1C_pkme, D0tokpi_af1C_deltE ); hist_D0tokpi_af1C_ppipe_deltE -> Fill( D0tokpi_af1C_ppipe, D0tokpi_af1C_deltE ); } //Ignore me! I am just a separator! std::cout<<__LINE__<<std::endl; TFile file_hist( file_hist_name.c_str(), "RECREATE" ); std::cout<<__LINE__<<std::endl; list_hist -> Write(); std::cout<<__LINE__<<std::endl; file_hist.Close(); std::cout<<__LINE__<<std::endl; }