LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
larg4::OverlaidWireplanesAction Class Reference

#include "OpParamAction.h"

Inheritance diagram for larg4::OverlaidWireplanesAction:
larg4::OpParamAction

Public Member Functions

 OverlaidWireplanesAction (std::vector< std::vector< double > >, int)
 
 ~OverlaidWireplanesAction ()
 
double GetAttenuationFraction (G4ThreeVector PhotonDirection, G4ThreeVector PhotonPosition)
 

Private Attributes

G4ThreeVector fPlaneNormal
 
std::vector< G4ThreeVector > fWireDirections
 
std::vector< double > fDPRatios
 

Detailed Description

Definition at line 96 of file OpParamAction.h.

Constructor & Destructor Documentation

larg4::OverlaidWireplanesAction::OverlaidWireplanesAction ( std::vector< std::vector< double > >  InputVectors,
int  Orientation 
)

Definition at line 85 of file OpParamAction.cxx.

86  {
87 
88  G4ThreeVector WireBasis1, WireBasis2;
89 
90  if(Orientation==0)
91  {
92  fPlaneNormal=G4ThreeVector(1,0,0);
93  WireBasis1 =G4ThreeVector(0,1,0);
94  WireBasis2 =G4ThreeVector(0,0,1);
95  }
96  else if(Orientation==1)
97  {
98  fPlaneNormal=G4ThreeVector(0,1,0);
99  WireBasis1 =G4ThreeVector(1,0,0);
100  WireBasis2 =G4ThreeVector(0,0,1);
101  }
102  else if(Orientation==2)
103  {
104  fPlaneNormal=G4ThreeVector(0,0,1);
105  WireBasis1 =G4ThreeVector(0,1,0);
106  WireBasis2 =G4ThreeVector(0,0,1);
107  }
108  else
109  {
110  throw cet::exception("OpParamAction") << "Unrecognized wireplane orientation. Options are 1=Xdrift, 2=Ydrift, 3=Zdrift\n";
111  }
112  for(size_t i=0; i!=InputVectors.size(); ++i)
113  {
114  if(InputVectors.at(i).size()!=3)
115  {
116  throw cet::exception("OpParamAction") << "Unrecognized wireplane parameter format. Expected vector(3)'s with v[0] = wire angle, v[1] = wire pitch, v[2] = wire diameter\n";
117  }
118  else
119  {
120  double theta = InputVectors[i][0]*3.142/180.;
121  fWireDirections.push_back(cos(theta)*WireBasis1 + sin(theta)*WireBasis2);
122  fDPRatios.push_back(InputVectors[i][2]/InputVectors[i][1]);
123  }
124  }
125  }
std::vector< double > fDPRatios
std::vector< G4ThreeVector > fWireDirections
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
larg4::OverlaidWireplanesAction::~OverlaidWireplanesAction ( )

Definition at line 130 of file OpParamAction.cxx.

131  {
132  }

Member Function Documentation

double larg4::OverlaidWireplanesAction::GetAttenuationFraction ( G4ThreeVector  PhotonDirection,
G4ThreeVector  PhotonPosition 
)
virtual

Reimplemented from larg4::OpParamAction.

Definition at line 137 of file OpParamAction.cxx.

138  {
139 
140  double AttenFraction=1.;
141 
142  for(size_t i=0; i!=fWireDirections.size(); ++i)
143  {
144  G4ThreeVector ProjDirection = PhotonDirection - fWireDirections.at(i) * (fWireDirections.at(i).dot(PhotonDirection.unit()));
145 
146  // fWireDirections.at(i).cross(PhotonDirection.cross(fWireDirections.at(i)).unit());
147  double CosTheta = (ProjDirection.mag() > 0 ? std::abs(fPlaneNormal.dot(ProjDirection))/ProjDirection.mag() : 1.0);
148  if(CosTheta < fDPRatios.at(i))
149  return 0;
150  else
151  AttenFraction *= (1.0 - fDPRatios.at(i) / CosTheta);
152  }
153  return AttenFraction;
154  }
std::vector< double > fDPRatios
std::vector< G4ThreeVector > fWireDirections

Member Data Documentation

std::vector<double> larg4::OverlaidWireplanesAction::fDPRatios
private

Definition at line 108 of file OpParamAction.h.

G4ThreeVector larg4::OverlaidWireplanesAction::fPlaneNormal
private

Definition at line 106 of file OpParamAction.h.

std::vector<G4ThreeVector> larg4::OverlaidWireplanesAction::fWireDirections
private

Definition at line 107 of file OpParamAction.h.


The documentation for this class was generated from the following files: