CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
DDG4ProductionCuts Class Reference

#include <DDG4ProductionCuts.h>

Public Member Functions

 DDG4ProductionCuts (const G4LogicalVolumeToDDLogicalPartMap &, int, const edm::ParameterSet &p)
 
void SetVerbosity (int verb)
 
void update ()
 
 ~DDG4ProductionCuts ()
 

Private Member Functions

G4ProductionCuts * getProductionCuts (G4Region *region)
 
G4Region * getRegion (const std::string &region)
 
void initialize ()
 
void setProdCuts (const DDLogicalPart lpart, G4LogicalVolume *lvolume)
 

Private Attributes

std::string m_KeywordRegion
 
bool m_protonCut
 
int m_Verbosity
 
G4LogicalVolumeToDDLogicalPartMap map_
 
G4LogicalVolumeToDDLogicalPartMap::Vector vec_
 

Detailed Description

Definition at line 15 of file DDG4ProductionCuts.h.

Constructor & Destructor Documentation

DDG4ProductionCuts::DDG4ProductionCuts ( const G4LogicalVolumeToDDLogicalPartMap map,
int  verb,
const edm::ParameterSet p 
)

Definition at line 10 of file DDG4ProductionCuts.cc.

References edm::ParameterSet::getUntrackedParameter(), initialize(), m_KeywordRegion, and m_protonCut.

11  : map_(map), m_Verbosity(verb) {
12  m_KeywordRegion = "CMSCutsRegion";
13  m_protonCut = p.getUntrackedParameter<bool>("CutsOnProton",true);
14  initialize();
15 }
G4LogicalVolumeToDDLogicalPartMap map_
T getUntrackedParameter(std::string const &, T const &) const
std::string m_KeywordRegion
DDG4ProductionCuts::~DDG4ProductionCuts ( )

Definition at line 17 of file DDG4ProductionCuts.cc.

17  {
18 }

Member Function Documentation

G4ProductionCuts * DDG4ProductionCuts::getProductionCuts ( G4Region *  region)
private

Definition at line 154 of file DDG4ProductionCuts.cc.

Referenced by setProdCuts().

154  {
155 
156  G4ProductionCuts * prodCuts = reg->GetProductionCuts();
157  if( !prodCuts ) {
158  prodCuts = new G4ProductionCuts();
159  reg->SetProductionCuts(prodCuts);
160  }
161  return prodCuts;
162 }
G4Region * DDG4ProductionCuts::getRegion ( const std::string &  region)
private

Definition at line 149 of file DDG4ProductionCuts.cc.

Referenced by initialize(), and setProdCuts().

149  {
150  G4Region * reg = G4RegionStore::GetInstance()->FindOrCreateRegion (regName);
151  return reg;
152 }
void DDG4ProductionCuts::initialize ( void  )
private

Definition at line 55 of file DDG4ProductionCuts.cc.

References DDMapper< KeyType, ValueType >::all(), dd_is_greater(), getRegion(), findQualityFiles::jj, LogDebug, m_KeywordRegion, m_Verbosity, map_, pileupDistInMC::num, HLT_25ns14e33_v3_cff::region, python.multivaluedict::sort(), AlCaHLTBitMon_QueryRunRegistry::string, DDMapper< KeyType, ValueType >::toString(), and vec_.

Referenced by DDG4ProductionCuts().

55  {
56 
58  // sort all root volumes - to get the same sequence at every run of the application.
59  // (otherwise, the sequence will depend on the pointer (memory address) of the
60  // involved objects, because 'new' does no guarantee that you allways get a
61  // higher (or lower) address when allocating an object of the same type ...
62  sort(vec_.begin(),vec_.end(),&dd_is_greater);
63  if ( m_Verbosity > 0 ) {
64  LogDebug("Physics") <<" DDG4ProductionCuts (New) : starting\n"
65  <<" DDG4ProductionCuts : Got "<<vec_.size()
66  <<" region roots.\n"
67  <<" DDG4ProductionCuts : List of all roots:";
68  for ( size_t jj=0; jj<vec_.size(); ++jj)
69  LogDebug("Physics") << " DDG4ProductionCuts : root="
70  << vec_[jj].second.name();
71  }
72 
73  // Now generate all the regions
74  for (G4LogicalVolumeToDDLogicalPartMap::Vector::iterator tit = vec_.begin();
75  tit != vec_.end(); tit++) {
76 
77  std::string regionName;
78  unsigned int num= map_.toString(m_KeywordRegion,(*tit).second,regionName);
79 
80  if (num != 1)
81  throw SimG4Exception("DDG4ProductionCuts: Problem with Region tags.");
82 
83  G4Region * region = getRegion(regionName);
84  region->AddRootLogicalVolume((*tit).first);
85 
86  if ( m_Verbosity > 0 )
87  LogDebug("Physics") << " MakeRegions: added " <<((*tit).first)->GetName()
88  << " to region " << region->GetName();
89  }
90 }
#define LogDebug(id)
G4LogicalVolumeToDDLogicalPartMap map_
bool dd_is_greater(const std::pair< G4LogicalVolume *, DDLogicalPart > &p1, const std::pair< G4LogicalVolume *, DDLogicalPart > &p2)
std::string m_KeywordRegion
unsigned int toString(const std::string &name, const KeyType &key, std::string &value, unsigned int pos=0) const
same as toDouble but for std::string-valued values of named parameters
Definition: DDMapper.h:182
G4LogicalVolumeToDDLogicalPartMap::Vector vec_
G4Region * getRegion(const std::string &region)
Vector all(const std::string &name, const std::string &value) const
get all std::mapped instances which have a specific &#39;name&#39; with value &#39;value&#39;
Definition: DDMapper.h:208
void DDG4ProductionCuts::setProdCuts ( const DDLogicalPart  lpart,
G4LogicalVolume *  lvolume 
)
private

Definition at line 93 of file DDG4ProductionCuts.cc.

References getProductionCuts(), getRegion(), LogDebug, m_KeywordRegion, m_protonCut, m_Verbosity, map_, pileupDistInMC::num, HLT_25ns14e33_v3_cff::region, AlCaHLTBitMon_QueryRunRegistry::string, groupFilesInBlocks::temp, DDMapper< KeyType, ValueType >::toDouble(), and DDMapper< KeyType, ValueType >::toString().

Referenced by update().

94  {
95 
96  if ( m_Verbosity > 0 )
97  LogDebug("Physics") <<" DDG4ProductionCuts: inside setProdCuts";
98 
99  G4Region * region = 0;
100 
101  std::string regionName;
102  unsigned int num= map_.toString(m_KeywordRegion,lpart,regionName);
103 
104  if (num != 1)
105  throw SimG4Exception("DDG4ProductionCuts: Problem with Region tags.");
106 
107  if ( m_Verbosity > 0 ) LogDebug("Physics") << "Using region " << regionName;
108 
109  region = getRegion(regionName);
110 
111  //
112  // search for production cuts
113  // you must have four of them: e+ e- gamma proton
114  //
115  double gammacut;
116  double electroncut;
117  double positroncut;
118  double protoncut = 0.0;
119  int temp = map_.toDouble("ProdCutsForGamma",lpart,gammacut);
120  if (temp != 1){
121  throw SimG4Exception("DDG4ProductionCuts: Problem with Region tags: no/more than one ProdCutsForGamma.");
122  }
123  temp = map_.toDouble("ProdCutsForElectrons",lpart,electroncut);
124  if (temp != 1){
125  throw SimG4Exception("DDG4ProductionCuts: Problem with Region tags: no/more than one ProdCutsForElectrons.");
126  }
127  temp = map_.toDouble("ProdCutsForPositrons",lpart,positroncut);
128  if (temp != 1) {
129  throw SimG4Exception("DDG4ProductionCuts: Problem with Region tags: no/more than one ProdCutsForPositrons.");
130  }
131  //
132  // For the moment I assume all of the three are set
133  //
134  G4ProductionCuts * prodCuts = getProductionCuts(region);
135  prodCuts->SetProductionCut( gammacut, idxG4GammaCut );
136  prodCuts->SetProductionCut( electroncut, idxG4ElectronCut );
137  prodCuts->SetProductionCut( positroncut, idxG4PositronCut );
138  // For recoil use the same cut as for e-
139  if(m_protonCut) { protoncut = electroncut; }
140  prodCuts->SetProductionCut( protoncut, idxG4ProtonCut );
141  if ( m_Verbosity > 0 ) {
142  LogDebug("Physics") << "DDG4ProductionCuts : Setting cuts for "
143  << regionName << "\n Electrons: " << electroncut
144  << "\n Positrons: " << positroncut
145  << "\n Gamma : " << gammacut;
146  }
147 }
#define LogDebug(id)
G4LogicalVolumeToDDLogicalPartMap map_
unsigned int toDouble(const std::string &name, const KeyType &key, double &value, unsigned int pos=0) const
returns the number specific parameters named &#39;name&#39; and the corrsponding double
Definition: DDMapper.h:119
std::string m_KeywordRegion
G4ProductionCuts * getProductionCuts(G4Region *region)
unsigned int toString(const std::string &name, const KeyType &key, std::string &value, unsigned int pos=0) const
same as toDouble but for std::string-valued values of named parameters
Definition: DDMapper.h:182
G4Region * getRegion(const std::string &region)
void DDG4ProductionCuts::SetVerbosity ( int  verb)
inline

Definition at line 22 of file DDG4ProductionCuts.h.

References m_Verbosity, and mathSSE::return().

22 { m_Verbosity = verb; return ; }
return((rh^lh)&mask)
void DDG4ProductionCuts::update ( void  )

Definition at line 44 of file DDG4ProductionCuts.cc.

References setProdCuts(), and vec_.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), PhysicsList::SetCuts(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

44  {
45  //
46  // Loop over all DDLP and provide the cuts for each region
47  //
48  for (G4LogicalVolumeToDDLogicalPartMap::Vector::iterator tit = vec_.begin();
49  tit != vec_.end(); tit++){
50  setProdCuts((*tit).second,(*tit).first);
51  }
52 }
void setProdCuts(const DDLogicalPart lpart, G4LogicalVolume *lvolume)
G4LogicalVolumeToDDLogicalPartMap::Vector vec_

Member Data Documentation

std::string DDG4ProductionCuts::m_KeywordRegion
private

Definition at line 32 of file DDG4ProductionCuts.h.

Referenced by DDG4ProductionCuts(), initialize(), and setProdCuts().

bool DDG4ProductionCuts::m_protonCut
private

Definition at line 34 of file DDG4ProductionCuts.h.

Referenced by DDG4ProductionCuts(), and setProdCuts().

int DDG4ProductionCuts::m_Verbosity
private

Definition at line 33 of file DDG4ProductionCuts.h.

Referenced by initialize(), setProdCuts(), and SetVerbosity().

G4LogicalVolumeToDDLogicalPartMap DDG4ProductionCuts::map_
private

Definition at line 31 of file DDG4ProductionCuts.h.

Referenced by initialize(), and setProdCuts().

G4LogicalVolumeToDDLogicalPartMap::Vector DDG4ProductionCuts::vec_
private

Definition at line 35 of file DDG4ProductionCuts.h.

Referenced by initialize(), and update().