CMS 3D CMS Logo

OptOPlateSplitter Class Reference

#include <Alignment/CocoaModel/interface/OptOPlateSplitter.h>

Inheritance diagram for OptOPlateSplitter:

OpticalObject

List of all members.

Public Member Functions

void constructSolidShape ()
virtual void detailedDeviatesLightRay (LightRay &lightray)
virtual void detailedTraversesLightRay (LightRay &lightray)
virtual void fastDeviatesLightRay (LightRay &lightray)
virtual void fastTraversesLightRay (LightRay &lightray)
 OptOPlateSplitter (OpticalObject *parent, const ALIstring &type, const ALIstring &name, const ALIbool copy_data)
 OptOPlateSplitter ()
 ~OptOPlateSplitter ()


Detailed Description

Definition at line 18 of file OptOPlateSplitter.h.


Constructor & Destructor Documentation

OptOPlateSplitter::OptOPlateSplitter (  )  [inline]

Definition at line 23 of file OptOPlateSplitter.h.

00023 { };

OptOPlateSplitter::OptOPlateSplitter ( OpticalObject parent,
const ALIstring type,
const ALIstring name,
const ALIbool  copy_data 
) [inline]

Definition at line 24 of file OptOPlateSplitter.h.

00024                                                                                                                   : 
00025   OpticalObject( parent, type, name, copy_data){ };

OptOPlateSplitter::~OptOPlateSplitter (  )  [inline]

Definition at line 26 of file OptOPlateSplitter.h.

00026 { };


Member Function Documentation

void OptOPlateSplitter::constructSolidShape (  )  [virtual]

Reimplemented from OpticalObject.

Definition at line 184 of file OptOPlateSplitter.cc.

References GlobalOptionMgr::getGlobalOptionValue(), GlobalOptionMgr::getInstance(), m, and OpticalObject::theSolidShape.

00185 {
00186   ALIdouble go;
00187   GlobalOptionMgr* gomgr = GlobalOptionMgr::getInstance();
00188   gomgr->getGlobalOptionValue("VisScale", go );
00189 
00190   theSolidShape = new CocoaSolidShapeBox( "Box", go*5.*cm/m, go*5.*cm/m, go*1.*cm/m ); //COCOA internal units are meters
00191 }

void OptOPlateSplitter::detailedDeviatesLightRay ( LightRay lightray  )  [virtual]

Reimplemented from OpticalObject.

Definition at line 24 of file OptOPlateSplitter.cc.

References OpticalObject::centreGlob(), GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, ALIUtils::dump3v(), LightRay::dumpData(), lat::endl(), OpticalObject::getPlate(), OpticalObject::name(), and LightRay::reflect().

00025 {
00026   if (ALIUtils::debug >= 2) std::cout << "LR: DETAILED REFLECTION IN PLATE SPLITTER " << name() << std::endl;
00027   if (ALIUtils::debug >= 3) ALIUtils::dump3v( centreGlob(), " centre Global RF ");
00028 
00029   //---------- Get forward plate
00030   ALIPlane plate = getPlate(1, 1);
00031   //---------- Reflect
00032   lightray.reflect( plate );
00033   if (ALIUtils::debug >= 2) {
00034     std::cout << "Reflected in plate" << std::endl;
00035     lightray.dumpData(" "); 
00036   }
00037 
00038 }

void OptOPlateSplitter::detailedTraversesLightRay ( LightRay lightray  )  [virtual]

Reimplemented from OpticalObject.

Definition at line 49 of file OptOPlateSplitter.cc.

References GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, LightRay::dumpData(), lat::endl(), OpticalObject::findExtraEntryValue(), OpticalObject::getPlate(), OpticalObject::name(), LightRay::refract(), and width.

00050 {
00051   if (ALIUtils::debug >= 2) std::cout << "LR: DETAILED TRAVERSE IN PLATE SPLITTER " << name() << std::endl;
00052 
00053   //---------- Get forward plate
00054   ALIPlane plate = getPlate(1, 1);
00055   //---------- If width is 0, just keep the same point 
00056   ALIdouble width = findExtraEntryValue("width");
00057   if( width == 0 ) {
00058     if(ALIUtils::debug >= 3) lightray.dumpData("Traversed with 0 width"); 
00059     return;
00060   }
00061 
00062   //---------- Refract while entering splitter
00063   ALIdouble refra_ind1 = 1.;
00064   ALIdouble refra_ind2 = findExtraEntryValue("refra_ind");
00065   lightray.refract( plate, refra_ind1, refra_ind2 );
00066   if (ALIUtils::debug >= 2) {
00067     lightray.dumpData("Refracted in first plate"); 
00068   }
00069 
00070   //---------- Get backward plate
00071   plate = getPlate(0, 1);
00072   //---------- Refract while exiting splitter
00073   lightray.refract( plate, refra_ind2, refra_ind1 );
00074   if (ALIUtils::debug >= 2) {
00075     lightray.dumpData("Refracted in first plate"); 
00076   }
00077 
00078 }

void OptOPlateSplitter::fastDeviatesLightRay ( LightRay lightray  )  [virtual]

Reimplemented from OpticalObject.

Definition at line 88 of file OptOPlateSplitter.cc.

References GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, LightRay::dumpData(), lat::endl(), OpticalObject::findExtraEntryValue(), OpticalObject::findExtraEntryValueIfExists(), OpticalObject::getPlate(), OpticalObject::name(), LightRay::reflect(), and LightRay::shiftAndDeviateWhileTraversing().

00089 {
00090   if (ALIUtils::debug >= 2) std::cout << "LR: REFLECTION IN PLATE SPLITTER " << name() << std::endl;
00091 
00092   //---------- Get forward plate
00093   ALIPlane plate = getPlate(1, 0);
00094   //---------- Reflect in plate (including intersection with it)
00095   lightray.reflect( plate );
00096   if (ALIUtils::debug >= 2) {
00097     lightray.dumpData("Reflected in plate"); 
00098   }
00099   //---------- Deviate Lightray 
00100   ALIdouble deviRX = findExtraEntryValue("deviRX");
00101   ALIdouble deviRY = findExtraEntryValue("deviRY");
00102   ALIdouble deviR;
00103   ALIbool bb = findExtraEntryValueIfExists("deviR", deviR);
00104   if( bb ) {
00105     deviRX = deviR;
00106     deviRY = deviR;
00107   }
00108 
00109   //  lightray.shiftAndDeviateWhileTraversing( this, 0., 0., 0., deviRX, deviRY, 0.);
00110   lightray.shiftAndDeviateWhileTraversing( this, 'R' );
00111   if (ALIUtils::debug >= 2) {
00112     lightray.dumpData("Deviated ");
00113   }
00114   
00115 }

void OptOPlateSplitter::fastTraversesLightRay ( LightRay lightray  )  [virtual]

Reimplemented from OpticalObject.

Definition at line 127 of file OptOPlateSplitter.cc.

References GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, LightRay::dumpData(), lat::endl(), OpticalObject::findExtraEntryValue(), OpticalObject::findExtraEntryValueIfExists(), OpticalObject::getPlate(), LightRay::intersect(), OpticalObject::name(), and LightRay::shiftAndDeviateWhileTraversing().

00128 {
00129   if (ALIUtils::debug >= 2) std::cout << "LR: TRAVERSE PLATE SPLITTER  " << name() << std::endl;
00130   
00131   //---------- Get backward plate
00132   ALIPlane plate = getPlate(0, 0);
00133   lightray.intersect( plate );
00134   if (ALIUtils::debug >= 2) {
00135     lightray.dumpData("Intersected with plate"); 
00136   }
00137   //---------- Shift and Deviate
00138   ALIdouble shiftX = findExtraEntryValue("shiftTX");
00139   ALIdouble shiftY = findExtraEntryValue("shiftTY");
00140   ALIdouble shift;
00141   ALIbool bb = findExtraEntryValueIfExists("shiftT", shift);
00142   if( bb ) {
00143     shiftX = shift;
00144     shiftY = shift;
00145   }
00146 
00147   ALIdouble deviTX = findExtraEntryValue("deviTX");
00148   ALIdouble deviTY = findExtraEntryValue("deviTY");
00149   ALIdouble deviT;
00150   bb = findExtraEntryValueIfExists("deviT", deviT);
00151   if( bb ) {
00152     deviTX = deviT;
00153     deviTY = deviT;
00154   }
00155 
00156   //  lightray.shiftAndDeviateWhileTraversing( this, shiftX, shiftY, 0., deviTX, deviTY, 0.);
00157   lightray.shiftAndDeviateWhileTraversing( this, 'T' );
00158   if (ALIUtils::debug >= 2) {
00159     lightray.dumpData("Shifted and Deviated");
00160   }
00161 
00162 }


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:29:18 2009 for CMSSW by  doxygen 1.5.4