hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- TwoTrackAnalysis.lcsim 8 Jan 2013 18:17:56 -0000 1.1
+++ TwoTrackAnalysis.lcsim 16 Jan 2013 22:24:39 -0000 1.2
@@ -1,13 +1,16 @@
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<inputFiles>
- <fileRegExp baseDir="./../data/mc/v3/pair_filter/" >pairs.*filt.*recon.*</fileRegExp>
+ <!--<fileRegExp baseDir="./../data/mc/v3/pair_filter_ideal_readout/" >pairs.*twotrkfilt.*</fileRegExp>-->
+ <!--<fileRegExp baseDir="./../data/mc/v3/pair_filter/" >hps.*1351.*evio.*</fileRegExp>-->
+ <fileRegExp baseDir="./../data/mc/v3/pair_filter/pairs_2trkfilter/" >pairs.*filt.*recon.*</fileRegExp>
+ <!--<fileRegExp baseDir="./../data/mc/v3/pair_filter/pairs_2trkfilter_old/" >pairs.*filt.*recon.*</fileRegExp>-->
<!--<fileRegExp baseDir="./../data/mc/v3/" >egs.*filt.*recon.*</fileRegExp>-->
<!--<fileRegExp baseDir="./../data/mc/SVT-CF" >.*</fileRegExp>-->
<!--<fileRegExp baseDir="./../data/mc/SVT-CF-THINSI" >.*</fileRegExp>-->
</inputFiles>
<control>
- <numberOfEvents>1000</numberOfEvents>
+ <numberOfEvents>-1</numberOfEvents>
<printInputFiles>true</printInputFiles>
<printDriversDetailed>true</printDriversDetailed>
</control>
@@ -36,8 +39,8 @@
<drivers>
<driver name="TwoTrackAnalysis"
type="org.lcsim.hps.users.phansson.TwoTrackAnlysis">
- <debug>true</debug>
- <hideFrame>false</hideFrame>
+ <debug>false</debug>
+ <hideFrame>true</hideFrame>
<outputPlotFileName></outputPlotFileName>
</driver>
<driver name="TruthMomentumAnalysis"
@@ -64,6 +67,7 @@
<driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver">
+ <!--<runNumber>-10</runNumber>-->
<runNumber>1351</runNumber>
</driver>
<driver name="EventMarkerDriver"
@@ -104,35 +108,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
- <driver name="EcalReadout"
- type="org.lcsim.hps.recon.ecal.HPSEcalFADCReadoutDriver">
- <readoutPeriod>4.0</readoutPeriod>
- <coincidenceWindow>2</coincidenceWindow>
- <ecalName>Ecal</ecalName>
- <ecalCollectionName>EcalHits</ecalCollectionName>
- <ecalRawCollectionName>EcalRawHits</ecalRawCollectionName>
- <triggerThreshold>80</triggerThreshold>
- <readoutThreshold>50</readoutThreshold>
- </driver>
-
- <driver name="EcalConverter"
- type="org.lcsim.hps.recon.ecal.HPSEcalConverterDriver">
- <rawCollectionName>EcalRawHits</rawCollectionName>
- <ecalCollectionName>EcalCorrectedHits</ecalCollectionName>
- <scale>1</scale>
- </driver>
<driver name="EcalTriggerFilter" type="org.lcsim.hps.recon.ecal.HPSEcalTriggerFilterDriver">
<inputCollection>EcalCorrectedHits</inputCollection>
@@ -151,32 +126,6 @@
<clusterCollectionName>EcalClusters</clusterCollectionName>
<deadTime>10</deadTime>
</driver>
- <driver name="SimpleSVTReadout" type="org.lcsim.hps.recon.tracking.SimpleSvtReadout">
- </driver>
-
- <driver name="SVTReadout" type="org.lcsim.hps.recon.tracking.apv25.SvtReadout">
- <debug>false</debug>
- <pedestalRun>false</pedestalRun>
- <triggerLatencyTime>288</triggerLatencyTime>
- </driver>
-
- <driver name="Digitization" type="org.lcsim.hps.recon.tracking.RearTransitionModule" />
-
- <driver name="DataProcessing" type="org.lcsim.hps.recon.tracking.TestRunDataProcessingModule" >
- <enablePileUpCut>true</enablePileUpCut>
- <enableThresholdCut>true</enableThresholdCut>
- <noiseThreshold>2</noiseThreshold>
- <numberOfSamplesAboveThreshold>3</numberOfSamplesAboveThreshold>
- <numberOfSamplesToReadOut>6</numberOfSamplesToReadOut>
- </driver>
-
- <driver name="ClockDriver"
- type="org.lcsim.hps.util.ClockDriver">
- </driver>
-
- <driver name="TestRunReconToLcio" type="org.lcsim.hps.evio.TestRunTriggeredReconToLcio">
- <!--<outputFile>${outputFile}</outputFile>-->
- </driver>
</drivers>
hps-java/src/main/java/org/lcsim/hps/users/phansson
diff -u -r1.4 -r1.5
--- TwoTrackAnlysis.java 10 Jan 2013 21:31:40 -0000 1.4
+++ TwoTrackAnlysis.java 16 Jan 2013 22:24:40 -0000 1.5
@@ -21,6 +21,7 @@
import org.lcsim.event.TrackerHit;
import org.lcsim.event.util.ParticleTypeClassifier;
import org.lcsim.fit.helicaltrack.HelicalTrackCross;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
import org.lcsim.geometry.Detector;
@@ -28,9 +29,11 @@
import org.lcsim.hps.evio.TriggerData;
import org.lcsim.hps.recon.ecal.HPSEcalCluster;
import org.lcsim.hps.recon.tracking.SvtTrackExtrapolator;
+import org.lcsim.hps.recon.tracking.TrackUtils;
import org.lcsim.hps.recon.vertexing.SimpleVertexer;
import org.lcsim.hps.recon.vertexing.TwoParticleVertexer;
import org.lcsim.hps.recon.vertexing.TwoTrackVertexer;
+import org.lcsim.recon.tracking.seedtracker.SeedTrack;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -117,7 +120,21 @@
if(this._debug) System.out.println(this.getClass().getSimpleName() + ": processing event "+totalEvents);
+
+
+
totalEvents++;
+
+ if(this._debug) {
+
+ if(!event.hasCollection(TriggerData.class, triggerDecisionCollectionName)) {
+ System.out.println( "Event has NO trigger bank");
+ } else {
+ System.out.println( "Event has trigger bank");
+ }
+ }
+ //if(1==1) return;
+
List<Track> tracklist = null;
if(event.hasCollection(Track.class,"MatchedTracks")) {
@@ -220,13 +237,7 @@
}
-
-// for(HPSEcalCluster cl : clusters) {
-// int[] clusterPosIdx = new int[2];
-// clusterPosIdx[0] = cl.getSeedHit().getIdentifierFieldValue("ix");
-// clusterPosIdx[1] = cl.getSeedHit().getIdentifierFieldValue("iy");
-// }
-
+ // Calculate residuals
totalTwoTrackEvents++;
@@ -283,10 +294,12 @@
br_line+="e_px/F:e_py/F:e_pz/F:p_px/F:p_py/F:p_pz/F:";
br_line+="trk1_q/I:trk1_chi2/F:trk1_px/F:trk1_py/F:trk1_pz/F:trk1_nhits/I:";
for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk1_hit"+iLayer+"_x/F:"+"trk1_hit"+iLayer+"_y/F:"+"trk1_hit"+iLayer+"_z/F:";
+ for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk1_res"+iLayer+"_x/F:"+"trk1_res"+iLayer+"_y/F:"+"trk1_res"+iLayer+"_z/F:";
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk1_strip"+iLayer+"_u/F:";
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk1_strip"+iLayer+"_n/F:";
br_line+="trk2_q/I:trk2_chi2/F:trk2_px/F:trk2_py/F:trk2_pz/F:trk2_nhits/I:";
for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk2_hit"+iLayer+"_x/F:"+"trk2_hit"+iLayer+"_y/F:"+"trk2_hit"+iLayer+"_z/F:";
+ for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk2_res"+iLayer+"_x/F:"+"trk2_res"+iLayer+"_y/F:"+"trk2_res"+iLayer+"_z/F:";
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk2_strip"+iLayer+"_u/F:";
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk2_strip"+iLayer+"_n/F:";
br_line+="vtx_truth_x/F:vtx_truth_y/F:vtx_truth_z/F:";
@@ -322,6 +335,17 @@
if (hitOnLayer != null) printWriter.format("%5.5f %5.5f %5.5f ", hitOnLayer.getPosition()[0],hitOnLayer.getPosition()[1],hitOnLayer.getPosition()[2]);
else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
}
+ //Get the helix for residual calculation
+ SeedTrack st1 = (SeedTrack) trk1;
+ HelicalTrackFit helix1 = st1.getSeedCandidate().getHelix();
+ for(int iLayer=0;iLayer<5;++iLayer) {
+ HelicalTrackHit hitOnLayer = hits1.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack);
+ if (hitOnLayer != null) {
+ Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hitOnLayer, helix1, true);
+ printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("resy"),res.get("resz"));
+ }
+ else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
+ }
List<HelicalTrackHit> stereoHits = new ArrayList<HelicalTrackHit>();
if(event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)) {
stereoHits = event.get(HelicalTrackHit.class, stereoHitCollectionName);
@@ -348,6 +372,17 @@
if (hitOnLayer != null) printWriter.format("%5.5f %5.5f %5.5f ", hitOnLayer.getPosition()[0],hitOnLayer.getPosition()[1],hitOnLayer.getPosition()[2]);
else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
}
+ //Get the helix for residual calculation
+ SeedTrack st2 = (SeedTrack) trk2;
+ HelicalTrackFit helix2 = st2.getSeedCandidate().getHelix();
+ for(int iLayer=0;iLayer<5;++iLayer) {
+ HelicalTrackHit hitOnLayer = hits2.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack);
+ if (hitOnLayer != null) {
+ Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hitOnLayer, helix2, true);
+ printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("resy"),res.get("resz"));
+ }
+ else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
+ }
for(int iLayer=1;iLayer<=10;++iLayer) {
HelicalTrackStrip strip=null;
if(striphits2.containsKey(iLayer)) strip = striphits2.get(iLayer).get(0);
@@ -396,7 +431,6 @@
private TriggerData getTriggerInfo(EventHeader event) {
- List<TriggerData> t;
if(!event.hasCollection(TriggerData.class, triggerDecisionCollectionName)) {
//if(_debug)
System.out.println( "Event has NO trigger bank");
@@ -408,6 +442,8 @@
System.out.println( "Event has trigger bank exists but is empty");
return null;
} else {
+ //if(_debug)
+ System.out.println( "Event has trigger bank");
return triggerDataList.get(0);
}
}