Skip to content

Commit

Permalink
Merge pull request #6831 from wmtford/QdxCPE
Browse files Browse the repository at this point in the history
Option to use old CPE error if charge exceeds one MIP
  • Loading branch information
ktf committed Dec 12, 2014
2 parents bcb0416 + 4f6ba70 commit b89cf10
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
Expand Up @@ -20,6 +20,10 @@ class StripCPEfromTrackAngle : public StripCPE
//Set to true if we are using the old error parameterization
const bool useLegacyError;

//Clusters with charge/path > this cut will use old error parameterization
// (overridden by useLegacyError; negative value disables the cut)
const float maxChgOneMIP;

public:
StripClusterParameterEstimator::LocalValues
localParameters( const SiStripCluster&, const GeomDetUnit&, const LocalTrajectoryParameters&) const;
Expand All @@ -36,6 +40,7 @@ class StripCPEfromTrackAngle : public StripCPE
const SiStripLatency& latency)
: StripCPE(conf, mag, geom, lorentz, backPlaneCorrection, confObj, latency )
, useLegacyError(conf.existsAs<bool>("useLegacyError") ? conf.getParameter<bool>("useLegacyError") : true)
, maxChgOneMIP(conf.existsAs<float>("maxChgOneMIP") ? conf.getParameter<double>("maxChgOneMIP") : -6000.)
{
mLC_P[0] = conf.existsAs<double>("mLC_P0") ? conf.getParameter<double>("mLC_P0") : -.326;
mLC_P[1] = conf.existsAs<double>("mLC_P1") ? conf.getParameter<double>("mLC_P1") : .618;
Expand Down
Expand Up @@ -17,4 +17,5 @@
mTEC_P0 = cms.double(-1.885),
mTEC_P1 = cms.double( .471),
useLegacyError = cms.bool(True),
maxChgOneMIP = cms.double(-6000.)
)
@@ -1,5 +1,6 @@
#include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPEfromTrackAngle.h"
#include "Geometry/CommonTopologies/interface/StripTopology.h"
#include "DataFormats/SiStripCluster/interface/SiStripClusterTools.h"

#include "vdt/vdtMath.h"

Expand Down Expand Up @@ -38,7 +39,15 @@ localParameters( const SiStripCluster& cluster, const GeomDetUnit& det, const Lo

const unsigned N = cluster.amplitudes().size();
const float fullProjection = p.coveredStrips( track+p.drift, ltp.position());
const float uerr2 = useLegacyError || cluster.isMerged() ? legacyStripErrorSquared(N,std::abs(fullProjection)) : stripErrorSquared( N, std::abs(fullProjection),ssdid.subDetector() );
float uerr2;
if (useLegacyError) {
uerr2 = legacyStripErrorSquared(N,std::abs(fullProjection));
} else if (maxChgOneMIP < 0.0) {
uerr2 = cluster.isMerged() ? legacyStripErrorSquared(N,std::abs(fullProjection)) : stripErrorSquared( N, std::abs(fullProjection),ssdid.subDetector() );
} else {
float dQdx = siStripClusterTools::chargePerCM(ssdid, cluster, ltp);
uerr2 = dQdx > maxChgOneMIP ? legacyStripErrorSquared(N,std::abs(fullProjection)) : stripErrorSquared( N, std::abs(fullProjection),ssdid.subDetector() );
}
const float strip = cluster.barycenter() - 0.5f*(1.f-p.backplanecorrection) * fullProjection
+ 0.5f*p.coveredStrips(track, ltp.position());

Expand Down

0 comments on commit b89cf10

Please sign in to comment.