#include <RecoTracker/SpecialSeedGenerators/interface/SeedGeneratorForCRack.h>
Definition at line 21 of file SeedGeneratorForCRack.h.
Definition at line 23 of file SeedGeneratorForCRack.h.
SeedGeneratorForCRack::SeedGeneratorForCRack | ( | const edm::ParameterSet & | conf | ) |
Definition at line 37 of file SeedGeneratorForCRack.cc.
References builderName, conf_, geometry, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), multipleScatteringFactor, ptmin, region, seedMomentum, and seedpt.
00037 : 00038 conf_(conf) 00039 { 00040 float ptmin=conf_.getParameter<double>("ptMin"); 00041 float originradius=conf_.getParameter<double>("originRadius"); 00042 float halflength=conf_.getParameter<double>("originHalfLength"); 00043 float originz=conf_.getParameter<double>("originZPosition"); 00044 seedpt = conf_.getParameter<double>("SeedPt"); 00045 00046 builderName = conf_.getParameter<std::string>("TTRHBuilder"); 00047 geometry=conf_.getUntrackedParameter<std::string>("GeometricStructure","STANDARD"); 00048 region=GlobalTrackingRegion(ptmin,originradius, 00049 halflength,originz); 00050 multipleScatteringFactor=conf_.getUntrackedParameter<double>("multipleScatteringFactor", 1.0); 00051 seedMomentum =conf_.getUntrackedParameter<double>("SeedMomentum",1); 00052 edm::LogInfo("SeedGeneratorForCRack")<<" PtMin of track is "<<ptmin<< 00053 " The Radius of the cylinder for seeds is "<<originradius <<"cm" << " The set Seed Momentum" << seedpt; 00054 }
virtual SeedGeneratorForCRack::~SeedGeneratorForCRack | ( | ) | [inline, virtual] |
void SeedGeneratorForCRack::init | ( | const SiStripRecHit2DCollection & | collstereo, | |
const SiStripRecHit2DCollection & | collrphi, | |||
const SiStripMatchedRecHit2DCollection & | collmatched, | |||
const edm::EventSetup & | c | |||
) |
Definition at line 12 of file SeedGeneratorForCRack.cc.
References alongMomentum, builderName, lat::endl(), geometry, edm::EventSetup::get(), CosmicHitPairGenerator::hitPairs(), HitPairs, CosmicLayerPairs::init(), LogDebug, magfield, oppositeToMomentum, edm::ESHandle< T >::product(), region, OrderedHitPairs::size(), thePairGenerator, thePropagatorAl, thePropagatorOp, theUpdator, tracker, and TTTRHBuilder.
Referenced by CRackSeedGenerator::produce().
00016 { 00017 iSetup.get<IdealMagneticFieldRecord>().get(magfield); 00018 iSetup.get<TrackerDigiGeometryRecord>().get(tracker); 00019 thePropagatorAl= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); 00020 thePropagatorOp= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) ); 00021 theUpdator= new KFUpdator(); 00022 00023 // get the transient builder 00024 00025 edm::ESHandle<TransientTrackingRecHitBuilder> theBuilder; 00026 00027 iSetup.get<TransientRecHitRecord>().get(builderName,theBuilder); 00028 TTTRHBuilder = theBuilder.product(); 00029 CosmicLayerPairs cosmiclayers(geometry); 00030 cosmiclayers.init(collstereo,collrphi,collmatched,iSetup); 00031 thePairGenerator=new CosmicHitPairGenerator(cosmiclayers,iSetup); 00032 HitPairs.clear(); 00033 thePairGenerator->hitPairs(region,HitPairs,iSetup); 00034 LogDebug("CosmicSeedFinder") <<"Initialized with " << HitPairs.size() << " hit pairs" << std::endl; 00035 }
void SeedGeneratorForCRack::run | ( | TrajectorySeedCollection & | output, | |
const edm::EventSetup & | c | |||
) |
Definition at line 56 of file SeedGeneratorForCRack.cc.
References region, seeds(), thePairGenerator, thePropagatorAl, thePropagatorOp, and theUpdator.
Referenced by CRackSeedGenerator::produce().
00056 { 00057 seeds(output,iSetup,region); 00058 delete thePairGenerator; 00059 delete thePropagatorAl; 00060 delete thePropagatorOp; 00061 delete theUpdator; 00062 }
void SeedGeneratorForCRack::seeds | ( | TrajectorySeedCollection & | output, | |
const edm::EventSetup & | c, | |||
const TrackingRegion & | region | |||
) |
Definition at line 64 of file SeedGeneratorForCRack.cc.
References alongMomentum, TransientTrackingRecHitBuilder::build(), clone(), HitPairs, i, SurfaceOrientation::inner, TrajectoryStateOnSurface::isValid(), LogDebug, magfield, multipleScatteringFactor, oppositeToMomentum, SurfaceOrientation::outer, TrajectoryStateTransform::persistentState(), PropagatorWithMaterial::propagate(), edm::OwnVector< T, P >::push_back(), TrajectoryStateOnSurface::rescaleError(), seedMomentum, OrderedHitPairs::size(), thePropagatorOp, theUpdator, tracker, transformer, TTTRHBuilder, Vector3DBase< T, FrameTag >::unit(), KFUpdator::update(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by run().
00066 { 00067 for(uint is=0;is<HitPairs.size();is++){ 00068 00069 GlobalPoint inner = tracker->idToDet((*(HitPairs[is].inner())).geographicalId())->surface().toGlobal((*(HitPairs[is].inner())).localPosition()); 00070 GlobalPoint outer = tracker->idToDet((*(HitPairs[is].outer())).geographicalId())->surface().toGlobal((*(HitPairs[is].outer())).localPosition()); 00071 00072 LogDebug("CosmicSeedFinder") <<"inner point of the seed "<<inner <<" outer point of the seed "<<outer; 00073 TransientTrackingRecHit::ConstRecHitPointer inrhit=TTTRHBuilder->build(HitPairs[is].inner()); 00074 TransientTrackingRecHit::ConstRecHitPointer outrhit = TTTRHBuilder->build((HitPairs[is].outer())); 00075 00076 edm::OwnVector<TrackingRecHit> hits; 00077 hits.push_back((*(HitPairs[is].outer())).clone()); 00078 00079 for (int i=0;i<2;i++){ 00080 //FIRST STATE IS CALCULATED CONSIDERING THAT THE CHARGE CAN BE POSITIVE OR NEGATIVE 00081 int predsign=(2*i)-1; 00082 if((outer.y()-inner.y())>0){ 00083 GlobalVector momentum = GlobalVector(inner-outer); 00084 momentum = momentum.unit()*seedMomentum; 00085 GlobalTrajectoryParameters Gtp(inner, 00086 momentum, 00087 predsign, 00088 &(*magfield)); 00089 AlgebraicSymMatrix errMatrix = AlgebraicSymMatrix(5,1); 00090 TSOS innerState = TSOS(Gtp, CurvilinearTrajectoryError(errMatrix), tracker->idToDet(((const TrackingRecHit *)HitPairs[is].inner())->geographicalId())->surface()); 00091 const TSOS innerUpdated = theUpdator->update(innerState, *inrhit); 00092 //Cosmic Seed update inner... 00093 LogDebug("CosmicSeedFinder") << " FirstTSOS " << innerUpdated; 00094 00095 //First propagation 00096 const TSOS outerState = 00097 thePropagatorOp->propagate(innerUpdated, 00098 tracker->idToDet((*(HitPairs[is].outer())).geographicalId())->surface()); 00099 if ( outerState.isValid()) { 00100 LogDebug("CosmicSeedFinder") <<"outerState "<<outerState; 00101 TSOS outerUpdated= theUpdator->update( outerState,*outrhit); 00102 //fudge factor for multiple scattering 00103 outerUpdated.rescaleError( multipleScatteringFactor); 00104 if ( outerUpdated.isValid()) { 00105 LogDebug("CosmicSeedFinder") <<"outerUpdated "<<outerUpdated; 00106 00107 PTrajectoryStateOnDet *PTraj= 00108 transformer.persistentState(outerUpdated, (*(HitPairs[is].outer())).geographicalId().rawId()); 00109 output.push_back(TrajectorySeed(*PTraj,hits,alongMomentum)); 00110 delete PTraj; 00111 00112 }else edm::LogWarning("CosmicSeedFinder") << " SeedForCosmics first update failed "; 00113 }else edm::LogWarning("CosmicSeedFinder") << " SeedForCosmics first propagation failed "; 00114 00115 00116 } 00117 else{ 00118 GlobalVector momentum= GlobalVector(outer-inner); 00119 momentum=momentum.unit()*seedMomentum; 00120 GlobalTrajectoryParameters Gtp(inner, 00121 momentum, 00122 predsign, 00123 &(*magfield)); 00124 AlgebraicSymMatrix errMatrix = AlgebraicSymMatrix(5,1); 00125 TSOS innerState = TSOS(Gtp, CurvilinearTrajectoryError(errMatrix), tracker->idToDet(((const TrackingRecHit *)HitPairs[is].inner())->geographicalId())->surface()); 00126 const TSOS innerUpdated = theUpdator->update(innerState, *inrhit); 00127 LogDebug("CosmicSeedFinder") << " FirstTSOS "<< innerState; 00128 00129 //First propagation 00130 const TSOS outerState = 00131 thePropagatorOp->propagate(innerUpdated, 00132 tracker->idToDet((*(HitPairs[is].outer())).geographicalId())->surface()); 00133 if ( outerState.isValid()) { 00134 00135 LogDebug("CosmicSeedFinder") <<"outerState "<<outerState; 00136 TSOS outerUpdated = theUpdator->update( outerState,*outrhit); 00137 //fudge factor for multiple scattering 00138 outerUpdated.rescaleError( multipleScatteringFactor); 00139 if ( outerUpdated.isValid()) { 00140 LogDebug("CosmicSeedFinder") <<"outerUpdated "<<outerUpdated; 00141 PTrajectoryStateOnDet *PTraj= 00142 transformer.persistentState(outerUpdated,(*(HitPairs[is].outer())).geographicalId().rawId()); 00143 output.push_back(TrajectorySeed(*PTraj,hits,oppositeToMomentum)); 00144 delete PTraj; 00145 00146 }else edm::LogWarning("CosmicSeedFinder") << " SeedForCosmics first update failed "; 00147 }else edm::LogWarning("CosmicSeedFinder") << " SeedForCosmics first propagation failed "; 00148 } 00149 } 00150 } 00151 }
std::string SeedGeneratorForCRack::builderName [private] |
Definition at line 49 of file SeedGeneratorForCRack.h.
Referenced by init(), and SeedGeneratorForCRack().
std::string SeedGeneratorForCRack::geometry [private] |
Definition at line 50 of file SeedGeneratorForCRack.h.
Referenced by init(), and SeedGeneratorForCRack().
float SeedGeneratorForCRack::multipleScatteringFactor [private] |
Definition at line 53 of file SeedGeneratorForCRack.h.
Referenced by SeedGeneratorForCRack(), and seeds().
Definition at line 40 of file SeedGeneratorForCRack.h.
Referenced by init(), run(), and SeedGeneratorForCRack().
double SeedGeneratorForCRack::seedMomentum [private] |
Definition at line 54 of file SeedGeneratorForCRack.h.
Referenced by SeedGeneratorForCRack(), and seeds().
float SeedGeneratorForCRack::seedpt [private] |
KFUpdator* SeedGeneratorForCRack::theUpdator [private] |
const TransientTrackingRecHitBuilder* SeedGeneratorForCRack::TTTRHBuilder [private] |