#include <CheckSecondary.h>
Public Member Functions | |
CheckSecondary (const edm::ParameterSet &p) | |
virtual | ~CheckSecondary () |
Private Member Functions | |
TTree * | bookTree (std::string) |
CheckSecondary (const CheckSecondary &) | |
void | endTree () |
const CheckSecondary & | operator= (const CheckSecondary &) |
void | update (const BeginOfEvent *evt) |
This routine will be called when the appropriate signal arrives. | |
void | update (const G4Step *step) |
This routine will be called when the appropriate signal arrives. | |
void | update (const EndOfEvent *evt) |
This routine will be called when the appropriate signal arrives. | |
void | update (const BeginOfTrack *trk) |
This routine will be called when the appropriate signal arrives. | |
Private Attributes | |
std::vector< double > * | deltae |
TFile * | file |
std::vector< double > * | mass |
int | nHad |
std::vector< int > * | nsec |
std::vector< int > * | procids |
std::vector< std::string > * | procs |
std::vector< double > * | px |
std::vector< double > * | py |
std::vector< double > * | pz |
bool | saveToTree |
bool | storeIt |
TreatSecondary * | treatSecondary |
TTree * | tree |
G4ProcessTypeEnumerator * | typeEnumerator |
Definition at line 24 of file CheckSecondary.h.
CheckSecondary::CheckSecondary | ( | const edm::ParameterSet & | p | ) |
Definition at line 23 of file CheckSecondary.cc.
References bookTree(), deltae, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mass, nsec, procids, procs, px, py, pz, saveToTree, treatSecondary, tree, and typeEnumerator.
: treatSecondary(0), typeEnumerator(0), nsec(0),procids(0), px(0),py(0),pz(0), mass(0),deltae(0), procs(0),file(0), tree(0) { edm::ParameterSet m_p = p.getParameter<edm::ParameterSet>("CheckSecondary"); std::string saveFile = m_p.getUntrackedParameter<std::string>("SaveInFile", "None"); treatSecondary = new TreatSecondary(m_p); typeEnumerator = new G4ProcessTypeEnumerator(); nsec = new std::vector<int>(); px = new std::vector<double>(); py = new std::vector<double>(); pz = new std::vector<double>(); mass = new std::vector<double>(); deltae = new std::vector<double>(); procids = new std::vector<int>(); procs = new std::vector<std::string>(); if (saveFile != "None") { saveToTree = true; tree = bookTree (saveFile); edm::LogInfo("CheckSecondary") << "Instantiate CheckSecondary with first" << " hadronic interaction information" << " to be saved in file " << saveFile; } else { saveToTree = false; edm::LogInfo("CheckSecondary") << "Instantiate CheckSecondary with first" << " hadronic interaction information" << " not saved"; } }
CheckSecondary::~CheckSecondary | ( | ) | [virtual] |
Definition at line 59 of file CheckSecondary.cc.
References deltae, endTree(), mass, nsec, procids, procs, px, py, pz, saveToTree, treatSecondary, and typeEnumerator.
{ if (saveToTree) endTree(); if (nsec) delete nsec; if (px) delete px; if (py) delete py; if (pz) delete pz; if (mass) delete mass; if (deltae) delete deltae; if (procs) delete procs; if (procids) delete procids; if (typeEnumerator) delete typeEnumerator; if (treatSecondary) delete treatSecondary; }
CheckSecondary::CheckSecondary | ( | const CheckSecondary & | ) | [private] |
TTree * CheckSecondary::bookTree | ( | std::string | fileName | ) | [private] |
Definition at line 73 of file CheckSecondary.cc.
References deltae, file, mass, nsec, procids, procs, px, py, and pz.
Referenced by CheckSecondary().
{ file = new TFile (fileName.c_str(), "RECREATE"); file->cd(); TTree * t1 = new TTree("T1", "Secondary Particle Information"); t1->Branch("SecondaryPx", "std::vector<double>", &px); t1->Branch("SecondaryPy", "std::vector<double>", &py); t1->Branch("SecondaryPz", "std::vector<double>", &pz); t1->Branch("SecondaryMass", "std::vector<double>", &mass); t1->Branch("NumberSecondaries", "std::vector<int>", &nsec); t1->Branch("DeltaEinInteract", "std::vector<double>", &deltae); t1->Branch("ProcessID", "std::vector<int>", &procids); t1->Branch("ProcessNames", "std::vector<std::string>", &procs); return t1; }
void CheckSecondary::endTree | ( | ) | [private] |
Definition at line 90 of file CheckSecondary.cc.
Referenced by ~CheckSecondary().
const CheckSecondary& CheckSecondary::operator= | ( | const CheckSecondary & | ) | [private] |
void CheckSecondary::update | ( | const BeginOfTrack * | ) | [private, virtual] |
This routine will be called when the appropriate signal arrives.
Implements Observer< const BeginOfTrack * >.
Definition at line 118 of file CheckSecondary.cc.
References TreatSecondary::initTrack(), LogDebug, nHad, storeIt, and treatSecondary.
void CheckSecondary::update | ( | const BeginOfEvent * | ) | [private, virtual] |
This routine will be called when the appropriate signal arrives.
Implements Observer< const BeginOfEvent * >.
Definition at line 102 of file CheckSecondary.cc.
References LogDebug.
{ int iev = (*evt)()->GetEventID(); LogDebug("CheckSecondary") << "CheckSecondary::=====> Begin of event = " << iev; (*nsec).clear(); (*procs).clear(); (*procids).clear(); (*deltae).clear(); (*px).clear(); (*py).clear(); (*pz).clear(); (*mass).clear(); }
void CheckSecondary::update | ( | const EndOfEvent * | ) | [private, virtual] |
This routine will be called when the appropriate signal arrives.
Implements Observer< const EndOfEvent * >.
Definition at line 170 of file CheckSecondary.cc.
References i, LogDebug, G4ProcessTypeEnumerator::processG4Name(), procids, saveToTree, tree, and typeEnumerator.
{ LogDebug("CheckSecondary") << "CheckSecondary::EndofEvent =====> Event " << (*evt)()->GetEventID() << " with " << (*nsec).size() << " hadronic collisions with" << " secondaries produced in each step"; for (unsigned int i= 0; i < (*nsec).size(); i++) LogDebug("CheckSecondary") << " " << (*nsec)[i] << " from " << (*procs)[i] << " ID " << (*procids)[i] << " (" << typeEnumerator->processG4Name((*procids)[i]) << ") deltaE = " << (*deltae)[i] << " MeV"; LogDebug("CheckSecondary") << "And " << (*mass).size() << " secondaries " << "produced in the first interactions"; for (unsigned int i= 0; i < (*mass).size(); i++) LogDebug("CheckSecondary") << "Secondary " << i << " (" << (*px)[i] << ", " << (*py)[i] << ", " << (*pz)[i] << ", " << (*mass)[i] << ")"; if (saveToTree) tree->Fill(); }
void CheckSecondary::update | ( | const G4Step * | ) | [private, virtual] |
This routine will be called when the appropriate signal arrives.
Implements Observer< const G4Step * >.
Definition at line 130 of file CheckSecondary.cc.
References DeDxDiscriminatorTools::charge(), i, LogDebug, m, mag(), mergeVDriftHistosByStation::name, nHad, storeIt, TreatSecondary::tracks(), testEve_cfg::tracks, and treatSecondary.
{ std::string name; int procID; bool hadrInt; double deltaE; std::vector<int> charge; std::vector<math::XYZTLorentzVector> tracks = treatSecondary->tracks(aStep, name, procID, hadrInt, deltaE, charge); if (storeIt && hadrInt) { double pInit = (aStep->GetPreStepPoint()->GetMomentum()).mag(); double pEnd = (aStep->GetPostStepPoint()->GetMomentum()).mag(); nHad++; int sec = (int)(tracks.size()); LogDebug("CheckSecondary") << "CheckSecondary:: Hadronic Interaction " << nHad << " of type " << name << " ID " << procID << " with " << sec << " secondaries " << " and Momentum (MeV/c) at start " << pInit << " and at end " << pEnd; (*nsec).push_back(sec); (*procs).push_back(name); (*procids).push_back(procID); (*deltae).push_back(deltaE); if (nHad == 1) { for (int i=0; i<sec; i++) { double m = tracks[i].M(); if (charge[i]<0) m = -m; (*px).push_back(tracks[i].Px()); (*py).push_back(tracks[i].Py()); (*pz).push_back(tracks[i].Pz()); (*mass).push_back(m); } } } }
std::vector<double> * CheckSecondary::deltae [private] |
Definition at line 52 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
TFile* CheckSecondary::file [private] |
Definition at line 54 of file CheckSecondary.h.
Referenced by bookTree(), and endTree().
std::vector<double> * CheckSecondary::mass [private] |
Definition at line 52 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
int CheckSecondary::nHad [private] |
Definition at line 50 of file CheckSecondary.h.
Referenced by update().
std::vector<int>* CheckSecondary::nsec [private] |
Definition at line 51 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
std::vector<int> * CheckSecondary::procids [private] |
Definition at line 51 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), update(), and ~CheckSecondary().
std::vector<std::string>* CheckSecondary::procs [private] |
Definition at line 53 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
std::vector<double>* CheckSecondary::px [private] |
Definition at line 52 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
std::vector<double> * CheckSecondary::py [private] |
Definition at line 52 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
std::vector<double> * CheckSecondary::pz [private] |
Definition at line 52 of file CheckSecondary.h.
Referenced by bookTree(), CheckSecondary(), and ~CheckSecondary().
bool CheckSecondary::saveToTree [private] |
Definition at line 49 of file CheckSecondary.h.
Referenced by CheckSecondary(), update(), and ~CheckSecondary().
bool CheckSecondary::storeIt [private] |
Definition at line 49 of file CheckSecondary.h.
Referenced by update().
TreatSecondary* CheckSecondary::treatSecondary [private] |
Definition at line 47 of file CheckSecondary.h.
Referenced by CheckSecondary(), update(), and ~CheckSecondary().
TTree* CheckSecondary::tree [private] |
Definition at line 55 of file CheckSecondary.h.
Referenced by CheckSecondary(), endTree(), and update().
Definition at line 48 of file CheckSecondary.h.
Referenced by CheckSecondary(), update(), and ~CheckSecondary().