WCSim/WCSim — pull request #30 by eosullivan (2014-12-01 19:45:48+00:00)
Title: PMT implementation change

## Commit Log Message
This commit implements some structural changes to the code. The information for a PMT (name, pe response, geometry, and QE) now is all contained together in the src/WCSimPMTObject.cc file. PMTs are a member of the abstract base class WCSimPMTObject and the virtual functions for this class can be found in include/WCSimPMTObject.hh. PMTs are now instantiated in the src/WCSimDetectorConfigs.cc file and a pointer to that PMT type is stored, allowing for the pe response and QE to be accessed by the appropriate files.

## Summary of Changed Files
* include/WCSimDetectorConstruction.hh: now includes functions which store and retrieve the PMT pointer.
* include/WCSimPMTObject.hh: This where the abstract base class WCSimPMTObject is defined. All PMT objects (PMT20inch, PMT8inch, etc) inherit from this base class and therefore must define the virtual functions which are defined in lines 15-21 of WCSimPMTObject.hh.
* src/WCSimDetectorConfigs.cc: This is where the PMTs are instantiated. This can be done using the WCSimPMTObject* PMT = new "insert PMT type here" command. The information about a PMT can then be used locally using the pointer PMT. The PMT pointer is stored using the WCSimDetectorConstruction::SetPMTPointer(PMT) command. Any future file which has a passed pointer to the detector will now be able to retrieve the PMT pointer.
* src/WCSimPMTObject.cc: This is where the information for each PMT is stored.
* src/WCSimPMTQE.cc: The quantum efficiency info was removed from this routine (since it is now stored in WCSimPMTObject.cc). Since this is a member function of WCSimDetectorConstruction, the pointer to the PMT is retrieved directly using WCSimPMTObject *PMT; PMT = GetPMTPointer();.
* src/WCSimWCPMT.cc: The single pe response function was removed since it is now stored in WCSimPMTObject.cc. This function is not a member of WCSimDetectorConstruction, but the pointer to the WCSimDetectorConstruction, myDetector, is already passed here. Thus, the pointer to the PMT is accessed using WCSimPMTObject * PMT; PMT = myDetector->GetPMTPointer();

## Estimated Impact on Users
There is no physics change in this commit and the output of the code should remain the same. For users who want to specify their own detector configuration, this commit will change the way the PMT is instantiated. See the src/WCSimDetectorConfigs.cc file for examples.