<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Dear Colleagues,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">One of the few outstanding issues holding up the generation of a high-statistics MC sample to accompany the 2016 data analysis is the determination of the ECal position relative to the SVT. I have repeated the analysis pioneered by Nathan
to plot the track-cluster match nSigma vs y for the 2016 data. Specifically, I used the FEE runs 7479 and 7483. I get essentially the same values (~42.5) as were found for the 2015 data. I have posted plots and some description to the slack 2pt3gev channel.
I would appreciate it if someone were to review the methodology to ensure that this technique is valid, i.e. that there are no hidden corrections in the calculation of nSigma which would skew the measurement.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sincerely,<o:p></o:p></p>
<p class="MsoNormal">Norman<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If anyone wants to replicate this, I used the org.hps.analysis.alignment.SvtCalorimeterAlignmentDriver class with the following modification to pick up the new FEE collection,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> protected void process(EventHeader event) {<o:p></o:p></p>
<p class="MsoNormal"> List<ReconstructedParticle> rpList = event.get(ReconstructedParticle.class, "FinalStateParticles");<o:p></o:p></p>
<p class="MsoNormal"> if (event.hasCollection(ReconstructedParticle.class, "OtherElectrons")) {<o:p></o:p></p>
<p class="MsoNormal"> rpList.addAll(event.get(ReconstructedParticle.class, "OtherElectrons"));<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> for (ReconstructedParticle rp : rpList) {<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> if (!TrackType.isGBL(rp.getType())) {<o:p></o:p></p>
<p class="MsoNormal"> continue;<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> // require both track and cluster<o:p></o:p></p>
<p class="MsoNormal"> if (rp.getClusters().size() != 1) {<o:p></o:p></p>
<p class="MsoNormal"> continue;<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> if (rp.getTracks().size() != 1) {<o:p></o:p></p>
<p class="MsoNormal"> continue;<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> double nSigma = rp.getGoodnessOfPID();<o:p></o:p></p>
<p class="MsoNormal"> Track t = rp.getTracks().get(0);<o:p></o:p></p>
<p class="MsoNormal"> TrackState trackAtEcal = TrackStateUtils.getTrackStateAtECal(t);<o:p></o:p></p>
<p class="MsoNormal"> double[] tposAtEcal = trackAtEcal.getReferencePoint();<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> // look for calorimeter edge wrt SVT<o:p></o:p></p>
<p class="MsoNormal"> if (tposAtEcal[2] > 0) {<o:p></o:p></p>
<p class="MsoNormal"> trkAtEcalXvsNSigmaTop.fill(nSigma, tposAtEcal[2]);<o:p></o:p></p>
<p class="MsoNormal"> } else {<o:p></o:p></p>
<p class="MsoNormal"> trkAtEcalXvsNSigmaBottom.fill(nSigma, -tposAtEcal[2]);<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>