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

BremEtaBin.cxx

Go to the documentation of this file.
00001 #include "AtlfastAlgs/BremEtaBin.h"
00002 
00003 namespace Atlfast{
00004 
00005   BremEtaBin::BremEtaBin(int randSeed) {
00006       m_randomEngine = new HepJamesRandom(randSeed);
00007     }
00008   BremEtaBin::BremEtaBin(const BremEtaBin& other): m_randomEngine(NULL){
00009     *this = other;
00010   }
00011 
00012   BremEtaBin& BremEtaBin::operator=(const BremEtaBin& other) {
00013     if (this != &other) {
00014       if (m_randomEngine) delete m_randomEngine;
00015       m_randomEngine = new HepJamesRandom(*other.m_randomEngine);
00016     map<TestValue, BremRBin*>::const_iterator iter = other.m_rBins.begin();
00017     map<TestValue, BremRBin*>::const_iterator end = other.m_rBins.end();
00018     for (;iter != end; ++iter) {
00019       m_rBins[iter->first] = new BremRBin( *(iter->second) );
00020     }
00021     }
00022     return *this;
00023   }
00024   BremEtaBin::~BremEtaBin() {
00025     map<TestValue, BremRBin*>::iterator iter = m_rBins.begin();
00026     map<TestValue, BremRBin*>::iterator end = m_rBins.end();
00027     for (;iter !=end; ++iter) {
00028       delete iter->second;
00029     }
00030     delete m_randomEngine;
00031   }
00032 
00033   void BremEtaBin::addBin(TestValue bremR, BremRBin* bin) {
00034       m_rBins[bremR] = bin;
00035     }
00036 
00037   double BremEtaBin::calculatePScale(double random) const {
00038       map<TestValue, BremRBin*>::const_iterator iter = m_rBins.begin();
00039       map<TestValue, BremRBin*>::const_iterator end = m_rBins.end();
00040       for (;iter != end; ++iter) {
00041         if (random < (iter->first).value() ) {
00042           return iter->second->calculatePScale();
00043         }else{
00044         }
00045       }
00046       return m_rBins.rbegin()->second->calculatePScale();
00047     }
00048   
00049 
00050   const map<TestValue, BremRBin*>* BremEtaBin::bins() const {return &m_rBins;}
00051 
00052   MsgStream& operator<<(MsgStream& s, BremEtaBin& bin) {
00053     map<TestValue, BremRBin*>::const_iterator iter = bin.bins()->begin();
00054     map<TestValue, BremRBin*>::const_iterator end = bin.bins()->end();
00055     s << "----------------- New Eta Bin  with " << bin.bins()->size() << " R Bins ----------------" << endreq;
00056     int i=1;
00057     for (; iter!=end; ++iter) {
00058       s << "Bremstrahlung Radius " << i << " = " << (iter->first).value() << endreq;
00059       s << *(iter->second) << endreq;
00060       ++i;
00061     }
00062     return s;
00063   }
00064 
00065 }//namepace
00066 
00067   
00068 
00069 
00070 
00071 
00072 

Generated on Tue Mar 18 11:18:22 2003 for AtlfastAlgs by doxygen1.3-rc1