Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

RTestParameterGenerator.cxx

Go to the documentation of this file.
00001 #include "FastShowerUtils/RTestParameterGenerator.h"
00002 
00003 #include <cmath>
00004 namespace FastShower{
00005   
00006   RTestParameterGenerator::RTestParameterGenerator(int nEvents):
00007     m_nEvents(nEvents), m_curEvnt(nEvents), m_nParticles(0){
00008     
00009    cout<<"RTestParameterGenerator begin"<<endl;
00010 
00011    double delEnergy = 0.0;   
00012    double energy    = 0.0;
00013    // generate energies: 0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120
00014    while(energy < 120.0){
00015      energy += delEnergy;
00016      m_energies.push_back(energy);
00017      ++delEnergy;
00018    }
00019    m_enIter = m_energies.begin();
00020    
00021    m_ids.push_back(11);
00022    m_ids.push_back(22);
00023    m_ids.push_back(211);
00024    m_pidIter = m_ids.begin();
00025    
00026    double eta;
00027    double cellEtaWidth = 3.2/32;
00028    double delEta  = cellEtaWidth/10;
00029    eta = 0.200;
00030    while(eta<(0.200+cellEtaWidth+0.0005)){
00031     m_etas.push_back(eta);
00032     eta += delEta;
00033    }
00034    eta = 1.900;
00035    while(eta<(1.900+cellEtaWidth+0.0005)){
00036     m_etas.push_back(eta);
00037     eta += delEta;
00038    }
00039    m_etaIter = m_etas.begin();
00040 
00041    double cellPhiWidth = M_PI/32;
00042    double delPhi  = cellPhiWidth/10;
00043    double phi = 0.0;
00044    while(phi<(cellPhiWidth+0.0005)){
00045     m_phis.push_back(phi);
00046     phi += delPhi;
00047    }
00048    m_phiIter = m_phis.begin();
00049    
00050 
00051    std::ostream_iterator<double>                     dOut(cout, "\n");
00052    std::ostream_iterator<int>                        iOut(cout, "\n");
00053    std::ostream_iterator<double>                     eOut(cout, "\n");
00054    std::ostream_iterator<double>                     pOut(cout, "\n");
00055    
00056    cout<<"RTestParameterGenerator vectors:"<<endl;
00057    
00058    cout<<"Energies"<<endl;
00059    std::copy(m_energies.begin(), m_energies.end(), dOut);
00060    
00061    cout<<"Ids"<<endl;
00062    std::copy(m_ids.begin(), m_ids.end(), iOut);
00063    
00064    cout<<"Etas"<<endl;
00065    std::copy(m_etas.begin(), m_etas.end(), eOut);
00066    
00067    cout<<"Phis"<<endl;
00068    std::copy(m_phis.begin(), m_phis.end(), pOut);
00069    
00070    cout<<"RTestParameterGenerator Constructor end"<<endl;
00071   }
00072   ParticleInfo* RTestParameterGenerator::next(){
00073     if(m_curEvnt == 0){
00074       m_curEvnt = m_nEvents;
00075       m_nParticles = 0;
00076       return 0;
00077     }
00078     
00079     ParticleInfo* p = new ParticleInfo(*m_phiIter, *m_etaIter, *m_enIter, *m_pidIter);
00080     
00081     if(++m_enIter  == m_energies.end()){
00082       m_enIter  = m_energies.begin();
00083       ++m_etaIter;
00084       if(m_etaIter == m_etas.end()){
00085         m_etaIter = m_etas.begin();
00086         ++m_phiIter;
00087         if(m_phiIter == m_phis.end()){
00088           m_phiIter = m_phis.begin();
00089           ++m_pidIter;
00090           if(m_pidIter == m_ids.end()){
00091             m_pidIter = m_ids.begin();
00092             --m_curEvnt;
00093           }
00094         }
00095       }
00096     }
00097     
00098     ++m_nParticles;
00099     //    cout<<m_nParticles<<" Generated in "<<m_nEvents<<" Events"<<endl;
00100     
00101     return p;
00102   }
00103   void RTestParameterGenerator::report(){
00104     cout<<m_nParticles<<" Generated in "<<m_nEvents<<" Events"<<endl;
00105   }
00106     
00107 }//namespace
00108     
00109     
00110   
00111   
00112 

Generated on Tue Mar 18 11:50:04 2003 for FastShowerUtils by doxygen1.3-rc1