Atlfast::MuonResolutionCalculator Class Reference

#include <MuonSpectrometer.h>

List of all members.

Public Member Functions

 MuonResolutionCalculator (const char *filename)
 ~MuonResolutionCalculator ()
double calculateResolution (const HepLorentzVector &avec)
void dump (std::string indent)

Private Member Functions

std::map< int, std::string > makeSectorMap (DOMNode *boundaries)

Private Attributes

std::vector< ProtoSpectrometerm_protoSpectrometers
std::vector< MuonSpectrometerm_muonSpectrometers


Detailed Description

Definition at line 107 of file MuonSpectrometer.h.


Constructor & Destructor Documentation

Atlfast::MuonResolutionCalculator::MuonResolutionCalculator ( const char *  filename  ) 

Definition at line 403 of file MuonSpectrometer.cxx.

00403                                                                         {
00404     
00405     DOMDocument* dom = parseFileForDocument(filename);
00406     
00407     if(dom == 0){
00408       std::cout<<"Could not parse " <<filename<<std::endl;
00409     }
00410     
00411     DOMElement* docElement = dom->getDocumentElement();
00412     
00413     if(docElement == 0){
00414       std::cout<<"Could not get DOMElement from DOMDocument"<<std::endl;
00415     }
00416     
00417     // get the node containing information for interpreting the resolutions
00418     XMLCh* s = XMLString::transcode("interpretation");
00419     DOMNodeList* binTags = 
00420       docElement->getElementsByTagName(s);
00421     XMLString::release(&s);
00422 
00423     DOMNode* boundaries = binTags->item(0);
00424     
00425     // get the node needed to build a spectrometer 
00426     s = XMLString::transcode("ptbinres");
00427     DOMNodeList* ptbinresTags = 
00428       docElement->getElementsByTagName(s);
00429     XMLString::release(&s);
00430 
00431     // build the spectrometers
00432     
00433     for(XMLSize_t ptr=0; ptr<ptbinresTags->getLength();++ptr){
00434       
00435       ProtoSpectrometer thisPS(boundaries,
00436                                ptbinresTags->item(ptr),
00437                                ptr==0,
00438                                ptr==(ptbinresTags->getLength()-1));
00439       
00440       m_protoSpectrometers.push_back(thisPS);
00441       
00442     }
00443     
00444     std::map<int,std::string> sectorMap = makeSectorMap(boundaries);
00445     
00446     std::vector<ProtoSpectrometer>::iterator psItr = m_protoSpectrometers.begin();
00447     for (; psItr!=m_protoSpectrometers.end()-1; ++psItr){
00448       
00449       MuonSpectrometer newMS = (*psItr).combine(*(psItr+1));
00450       newMS.setSectorMap(sectorMap);
00451       m_muonSpectrometers.push_back(newMS);
00452       
00453     }
00454     
00455     // Free up memory from the ProtoSpectrometers as they're no longer needed
00456     m_protoSpectrometers.clear();
00457 
00458     // Delete the DOMDocument
00459     delete dom;
00460 
00461     // Clean up xerces-style. This should deallocate all memory used by Xerces
00462     // but doesn't seem to work. Nice one.
00463     XMLPlatformUtils::Terminate();
00464 
00465   }

Atlfast::MuonResolutionCalculator::~MuonResolutionCalculator (  )  [inline]

Definition at line 110 of file MuonSpectrometer.h.

00110 {};


Member Function Documentation

double Atlfast::MuonResolutionCalculator::calculateResolution ( const HepLorentzVector &  avec  ) 

Definition at line 484 of file MuonSpectrometer.cxx.

00484                                                                                   {
00485 
00486     // check for appropriate MuonSpectrometer
00487     IsCorrectMuonSpectrometer icms(avec.perp());
00488     std::vector<MuonSpectrometer>::iterator msitr = find_if(m_muonSpectrometers.begin(),
00489                                                              m_muonSpectrometers.end(),
00490                                                              icms);
00491     if ( msitr == m_muonSpectrometers.end() ){
00492       // Could not find correct MuonSpectrometer, returning resolution of 1.0
00493       return 1.;
00494     }
00495     
00496     return (*msitr).calculateResolution(avec);    
00497   }

void Atlfast::MuonResolutionCalculator::dump ( std::string  indent  ) 

Definition at line 499 of file MuonSpectrometer.cxx.

00499                                                      {
00500     indent += " ";
00501     std::cout<<indent<<"\nDump for MuonResolutionCalculator:\n";
00502     std::for_each(m_protoSpectrometers.begin(), 
00503                   m_protoSpectrometers.end(), 
00504                   AddToDump(indent));
00505     std::for_each(m_muonSpectrometers.begin(), 
00506                   m_muonSpectrometers.end(), 
00507                   AddToDump(indent));
00508     
00509   }      

std::map< int, std::string > Atlfast::MuonResolutionCalculator::makeSectorMap ( DOMNode *  boundaries  )  [private]

Definition at line 467 of file MuonSpectrometer.cxx.

00467                                                                                   {
00468     
00469 
00470 
00471     DOMNode* node = getFirstChildTagByName(boundaries, "sectortypes");
00472 
00473     std::vector<DOMNode*> sectorTypeNodes =
00474       getAllChildTagsByName(node, "sectortype");
00475 
00476     AddToMap atm;
00477     std::map<int,std::string> sectorMap = std::for_each(sectorTypeNodes.begin(),
00478                                                         sectorTypeNodes.end(),
00479                                                         atm).getMap();
00480     return sectorMap;
00481     
00482   }


Member Data Documentation

std::vector<ProtoSpectrometer> Atlfast::MuonResolutionCalculator::m_protoSpectrometers [private]

Definition at line 115 of file MuonSpectrometer.h.

std::vector<MuonSpectrometer> Atlfast::MuonResolutionCalculator::m_muonSpectrometers [private]

Definition at line 116 of file MuonSpectrometer.h.


The documentation for this class was generated from the following files:
Generated on Mon Sep 24 14:19:41 2007 for AtlfastAlgs by  doxygen 1.5.1