Implements edm::EDAnalyzer.
Definition at line 114 of file TrackParameterAnalyzer.cc.
References trackerHits::c, funct::cos(), gather_cfg::cout, edm::Event::getByLabel(), h1_Beff_, h1_par0_, h1_par1_, h1_par2_, h1_par3_, h1_par4_, h1_pull0_, h1_pull1_, h1_pull2_, h1_pull3_, h1_pull4_, h1_res0_, h1_res1_, h1_res2_, h1_res3_, h1_res4_, h2_dvsphi_, reco::TrackBase::i_dsz, reco::TrackBase::i_dxy, reco::TrackBase::i_lambda, reco::TrackBase::i_phi, reco::TrackBase::i_qoverp, M_PI, match(), L1TEmulatorMonitor_cff::p, Gflash::par, funct::pow(), lumiQueryAPI::q, recoTrackProducer_, asciidump::s, simG4_, simUnit_, funct::sin(), mathSSE::sqrt(), matplotRender::t, v, and verbose_.
117 using CLHEP::HepLorentzVector;
122 const double fBfield=3.8;
127 std::cout <<
"SimVertex " << simVtcs->size() << std::endl;
128 for(edm::SimVertexContainer::const_iterator
v=simVtcs->begin();
129 v!=simVtcs->end(); ++
v){
131 << std::setw(10) << std::setprecision(4)
132 <<
v->position().x() <<
" "
133 <<
v->position().y() <<
" "
134 <<
v->position().z() <<
" "
135 <<
v->parentIndex() <<
" "
136 <<
v->noParent() <<
" "
146 std::vector<ParameterVector > tsim;
147 for(edm::SimTrackContainer::const_iterator
t=simTrks->begin();
148 t!=simTrks->end(); ++
t){
150 std::cout <<
"simtrk has no vertex" << std::endl;
154 HepLorentzVector
v((*simVtcs)[
t->vertIndex()].position().x(),
155 (*simVtcs)[
t->vertIndex()].position().y(),
156 (*simVtcs)[
t->vertIndex()].position().z(),
157 (*simVtcs)[
t->vertIndex()].position().e());
158 int pdgCode=
t->type();
162 std::cout <<
"funny particle skipped , code=" << pdgCode << std::endl;
165 if ((pdgCode==11)||(pdgCode==13)||(pdgCode==15)||(pdgCode==-211)||(pdgCode==-2212)||(pdgCode==321)){Q=-1;}
166 else if((pdgCode==-11)||(pdgCode==-13)||(pdgCode==-15)||(pdgCode==211)||(pdgCode==2212)||(pdgCode==321)){Q=1;}
170 HepLorentzVector
p(
t->momentum().x(),
t->momentum().y(),
t->momentum().z(),
t->momentum().e());
173 <<
" gen=" << std::setw( 4) <<
t->genpartIndex()
174 <<
" vtx=" << std::setw( 4) <<
t->vertIndex()
175 <<
" pdg=" << std::setw( 5) <<
t->type()
176 <<
" Q=" << std::setw( 3) << Q
177 <<
" pt=" << std::setw(6) <<
p.perp()
178 <<
" vx=" << std::setw(6) <<
v.x()
179 <<
" vy=" << std::setw(6) <<
v.y()
180 <<
" vz=" << std::setw(6) <<
v.z()
183 if ( (Q != 0) && (
p.perp()>0.1) ){
187 double kappa=-Q*0.002998*fBfield/
p.perp();
188 double D0=x0*
sin(
p.phi())-y0*
cos(
p.phi())-0.5*kappa*(x0*x0+y0*y0);
189 double q=
sqrt(1.-2.*kappa*D0);
190 double s0=(x0*
cos(
p.phi())+y0*
sin(
p.phi()))/
q;
192 if (fabs(kappa*s0)>0.001){
193 s1=asin(kappa*s0)/kappa;
195 double ks02=(kappa*s0)*(kappa*s0);
196 s1=s0*(1.+ks02/6.+3./40.*ks02*ks02+5./112.*
pow(ks02,3));
217 for(reco::TrackCollection::const_iterator
t=recTracks->begin();
218 t!=recTracks->end(); ++
t){
222 std::cout <<
"reco pars= " << p << std::endl;
225 for(std::vector<ParameterVector>::const_iterator
s=tsim.begin();
Sin< T >::type sin(const T &t)
math::Vector< dimension >::type ParameterVector
parameter vector
bool match(const ParameterVector &a, const ParameterVector &b)
std::string recoTrackProducer_
Cos< T >::type cos(const T &t)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
reco::TrackBase::ParameterVector ParameterVector
Power< A, B >::type pow(const A &a, const B &b)
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
const double par[8 *NPar][4]