Author: [log in to unmask]
Date: Tue Feb 23 19:14:42 2016
New Revision: 4242
Log:
make cuts settable
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java Tue Feb 23 19:14:42 2016
@@ -74,36 +74,11 @@
private final static Logger LOGGER = Logger.getLogger(TridentMonitoring.class.getPackage().getName());
private double ebeam = 1.05;
-
- public void setBeamEnergy(double ebeam){
- this.ebeam = ebeam;
-
- plotsMinMass = 0.03 * ebeam;
- plotsMaxMass = 0.04 * ebeam;
-
-
- //v0 plot ranges
- v0PzMax = 1.25 * ebeam;//GeV
- v0PzMin = 0.1;// GeV
- v0PyMax = 0.04 * ebeam;//GeV absolute value
- v0PxMax = 0.04 * ebeam;//GeV absolute value
-
- //v0 cuts
- v0PzMaxCut = 1.25 * ebeam;//GeV
- v0PzMinCut = 0.1;// GeV
- v0PyCut = 0.04 * ebeam;//GeV absolute value
- v0PxCut = 0.04 * ebeam;//GeV absolute value
-
- // track quality cuts
- beamPCut = 0.85 * ebeam;
- minPCut = 0.05;
-// private double trkPyMax = 0.2;
-// private double trkPxMax = 0.2;
- radCut = 0.8 * ebeam;
-
-
- }
-
+
+ public void setBeamEnergy(double ebeam) {
+ this.ebeam = ebeam;
+ }
+
private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
// private static final int nCuts = 9;
// private final String[] cutNames = {"Trk Quality",
@@ -246,45 +221,48 @@
private final IHistogram1D[][] cutVertexZ = new IHistogram1D[Cut.nCuts][2];
private final IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[Cut.nCuts][2];
- private double plotsMinMass = 0.03 * ebeam;
- private double plotsMaxMass = 0.04 * ebeam;
+ private final double plotsMinMass = 0.03;
+ private final double plotsMaxMass = 0.04;
//clean up event first
private final int nTrkMax = 5;
private final int nPosMax = 1;
private final double maxChi2SeedTrack = 7.0;
- private final double maxChi2GBLTrack = 15.0;
- private final double maxVertChi2 = 7.0;
+ private double maxChi2GBLTrack = 15.0;
+ private double maxUnconVertChi2 = 7.0;
+ private double maxBsconVertChi2 = 1000.0; //disable by default
//v0 plot ranges
- private double v0PzMax = 1.25 * ebeam;//GeV
- private double v0PzMin = 0.1;// GeV
- private double v0PyMax = 0.04 * ebeam;//GeV absolute value
- private double v0PxMax = 0.04 * ebeam;//GeV absolute value
+ private final double v0PzMax = 1.25;//GeV
+ private final double v0PzMin = 0.1;// GeV
+ private final double v0PyMax = 0.04;//GeV absolute value
+ private final double v0PxMax = 0.04;//GeV absolute value
private final double v0VzMax = 50.0;// mm from target...someday make mass dependent
private final double v0VyMax = 2.0;// mm from target...someday make mass dependent
private final double v0VxMax = 2.0;// mm from target...someday make mass dependent
//v0 cuts
- private double v0PzMaxCut = 1.25 * ebeam;//GeV
- private double v0PzMinCut = 0.1;// GeV
- private double v0PyCut = 0.04 * ebeam;//GeV absolute value
- private double v0PxCut = 0.04 * ebeam;//GeV absolute value
- private final double v0VzCut = 50.0;// mm from target...someday make mass dependent
- private final double v0VyCut = 2.0;// mm from target...someday make mass dependent
- private final double v0VxCut = 2.0;// mm from target...someday make mass dependent
-
+ private final double v0PzMaxCut = 1.25;//GeV
+ private final double v0PzMinCut = 0.1;// GeV
+ private final double v0PyCut = 0.04;//GeV absolute value
+ private final double v0PxCut = 0.04;//GeV absolute value
+ private final double v0UnconVzCut = 50.0;// mm from target...someday make mass dependent
+ private double v0UnconVyCut = 2.0;// mm from target...someday make mass dependent
+ private double v0UnconVxCut = 2.0;// mm from target...someday make mass dependent
+ private double v0BsconVyCut = 10.0; //disable by default
+ private double v0BsconVxCut = 10.0; //disable by default
+
// track quality cuts
- private double beamPCut = 0.85 * ebeam;
- private double minPCut = 0.05;
+ private final double beamPCut = 0.85;
+ private final double minPCut = 0.05;
// private double trkPyMax = 0.2;
// private double trkPxMax = 0.2;
- private double radCut = 0.8 * ebeam;
+ private final double radCut = 0.8;
private final double trkTimeDiff = 5.0;
private final double clusterTimeDiffCut = 2.5;
- private final double l1IsoMin = 1.0;
+ private double l1IsoMin = 0.5;
private double[] beamSize = {0.001, 0.130, 0.050}; //rough estimate from harp scans during engineering run production running
@@ -298,7 +276,45 @@
private float nRecoV0 = 0;
private final float[] nPassCut = new float[Cut.nCuts];
-
+ public void setMaxChi2GBLTrack(double maxChi2GBLTrack) {
+ this.maxChi2GBLTrack = maxChi2GBLTrack;
+ }
+
+ public void setMaxUnconVertChi2(double maxUnconVertChi2) {
+ this.maxUnconVertChi2 = maxUnconVertChi2;
+ }
+
+ public void setMaxBsconVertChi2(double maxBsconVertChi2) {
+ this.maxBsconVertChi2 = maxBsconVertChi2;
+ }
+
+ public void setV0UnconVyCut(double v0UnconVyCut) {
+ this.v0UnconVyCut = v0UnconVyCut;
+ }
+
+ public void setV0UnconVxCut(double v0UnconVxCut) {
+ this.v0UnconVxCut = v0UnconVxCut;
+ }
+
+ public void setV0BsconVyCut(double v0BsconVyCut) {
+ this.v0BsconVyCut = v0BsconVyCut;
+ }
+
+ public void setV0BsconVxCut(double v0BsconVxCut) {
+ this.v0BsconVxCut = v0BsconVxCut;
+ }
+
+ public void setL1IsoMin(double l1IsoMin) {
+ this.l1IsoMin = l1IsoMin;
+ }
+
+ public void setBeamSizeX(double beamSizeX) {
+ this.beamSize[1] = beamSizeX;
+ }
+
+ public void setBeamSizeY(double beamSizeY) {
+ this.beamSize[2] = beamSizeY;
+ }
@Override
protected void detectorChanged(Detector detector) {
@@ -329,15 +345,15 @@
// triTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Track time difference", 100, -10, 10);
// triTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
- triTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+ triTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
triDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron - electron momentum", 100, -1., 1.0);
- triSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+ triSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
triPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
triPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
- triMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
- triZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
- triMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass", 100, 0, 0.11);
+ triMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+ triZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
+ triMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass", 100, 0, 0.1 * ebeam);
triZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
// triX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex X", 100, -v0VxMax, v0VxMax);
// triY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y", 100, -v0VyMax, v0VyMax);
@@ -354,9 +370,9 @@
triRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time difference", 100, -10, 10);
triRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
- triRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+ triRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
triRadDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron - electron momentum", 100, -1., 1.0);
- triRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+ triRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
triRadPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
triRadPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
@@ -369,23 +385,23 @@
// triRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z", 100, -v0VzMax, v0VzMax);
// triRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
// triRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
- triRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px", 100, -v0PxMax, v0PxMax);
- triRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py", 100, -v0PyMax, v0PyMax);
- triRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Pz", 100, v0PzMin, v0PzMax);
- triRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+ triRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam);
+ triRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py", 100, -v0PyMax * ebeam, v0PyMax * ebeam);
+ triRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Pz", 100, v0PzMin * ebeam, v0PzMax * ebeam);
+ triRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py vs. Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam, 100, -v0PyMax * ebeam, v0PyMax * ebeam);
triRadU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px over Ptot", 100, -0.1, 0.1);
triRadV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py over Ptot", 100, -0.1, 0.1);
// vertTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Track time difference", 100, -10, 10);
// vertTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
- vertTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+ vertTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
vertDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron - electron momentum", 100, -1., 1.0);
- vertSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+ vertSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
vertPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
vertPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
- vertMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
- vertZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
+ vertMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+ vertZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
vertMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass", 100, 0, 0.11);
vertZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
// vertX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex X", 100, -v0VxMax, v0VxMax);
@@ -403,14 +419,14 @@
vertRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time difference", 100, -10, 10);
vertRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
- vertRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+ vertRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
vertRadDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron - electron momentum", 100, -1., 1.0);
- vertRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+ vertRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
vertRadPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
vertRadPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
- vertRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
- vertRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
+ vertRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+ vertRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
vertRadMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass", 100, 0, 0.11);
vertRadZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
vertRadX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex X", 100, -v0VxMax, v0VxMax);
@@ -418,10 +434,10 @@
vertRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z", 100, -v0VzMax, v0VzMax);
vertRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
vertRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
- vertRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px", 100, -v0PxMax, v0PxMax);
- vertRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py", 100, -v0PyMax, v0PyMax);
- vertRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Pz", 100, v0PzMin, v0PzMax);
- vertRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+ vertRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam);
+ vertRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py", 100, -v0PyMax * ebeam, v0PyMax * ebeam);
+ vertRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Pz", 100, v0PzMin * ebeam, v0PzMax * ebeam);
+ vertRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py vs. Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam, 100, -v0PyMax * ebeam, v0PyMax * ebeam);
vertRadU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px over Ptot", 100, -0.1, 0.1);
vertRadV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py over Ptot", 100, -0.1, 0.1);
@@ -559,6 +575,14 @@
minL1Iso = Math.min(eleL1Iso, posL1Iso);
}
+ BilliorVertexer vtxFitter = new BilliorVertexer(TrackUtils.getBField(event.getDetector()).y());
+ vtxFitter.setBeamSize(beamSize);
+ List<BilliorTrack> billiorTracks = new ArrayList<BilliorTrack>();
+ billiorTracks.add(new BilliorTrack(electron.getTracks().get(0)));
+ billiorTracks.add(new BilliorTrack(positron.getTracks().get(0)));
+ vtxFitter.doBeamSpotConstraint(true);
+ BilliorVertex bsconVertex = vtxFitter.fitVertex(billiorTracks);
+
//start applying cuts
EnumSet<Cut> bits = EnumSet.noneOf(Cut.class);
@@ -567,13 +591,13 @@
bits.add(Cut.TRK_QUALITY);
}
- boolean v0QualityCut = uncVert.getChi2() < maxVertChi2;
+ boolean v0QualityCut = uncVert.getChi2() < maxUnconVertChi2 && bsconVertex.getChi2() < maxBsconVertChi2;
if (v0QualityCut) {
bits.add(Cut.VTX_QUALITY);
}
- boolean vertexMomentumCut = v0MomRot.z() < v0PzMaxCut && v0MomRot.z() > v0PzMinCut && Math.abs(v0MomRot.x()) < v0PxCut && Math.abs(v0MomRot.y()) < v0PyCut;
- boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0VxCut && Math.abs(v0Vtx.y()) < v0VyCut && Math.abs(v0Vtx.z()) < v0VzCut;
+ boolean vertexMomentumCut = v0MomRot.z() < v0PzMaxCut * ebeam && v0MomRot.z() > v0PzMinCut * ebeam && Math.abs(v0MomRot.x()) < v0PxCut * ebeam && Math.abs(v0MomRot.y()) < v0PyCut * ebeam;
+ boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0UnconVxCut && Math.abs(v0Vtx.y()) < v0UnconVyCut && Math.abs(v0Vtx.z()) < v0UnconVzCut && Math.abs(bsconVertex.getPosition().x()) < v0BsconVxCut && Math.abs(bsconVertex.getPosition().y()) < v0BsconVyCut;
if (vertexMomentumCut && vertexPositionCut) {
bits.add(Cut.VERTEX_CUTS);
}
@@ -584,8 +608,8 @@
}
boolean topBottomCut = electron.getMomentum().y() * positron.getMomentum().y() < 0;
- boolean pMinCut = electron.getMomentum().magnitude() > minPCut && positron.getMomentum().magnitude() > minPCut;
- boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut && positron.getMomentum().magnitude() < beamPCut;
+ boolean pMinCut = electron.getMomentum().magnitude() > minPCut * ebeam && positron.getMomentum().magnitude() > minPCut * ebeam;
+ boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut * ebeam && positron.getMomentum().magnitude() < beamPCut * ebeam;
if (topBottomCut && pMaxCut && pMinCut) {
bits.add(Cut.TRACK_CUTS);
}
@@ -628,7 +652,7 @@
EnumSet<Cut> allButThisCut = EnumSet.allOf(Cut.class);
allButThisCut.remove(cut);
if (bits.containsAll(allButThisCut)) {
- if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+ if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
switch (cut) {
case ISOLATION:
l1Iso.fill(minL1Iso);
@@ -657,7 +681,7 @@
}
}
if (!bits.contains(cut)) {
- if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+ if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
cutVertexZ[cut.ordinal()][VERTEX].fill(v0Vtx.z());
}
cutVertexMass[cut.ordinal()][VERTEX].fill(uncV0.getMass());
@@ -669,7 +693,7 @@
allTriCutsButThisCut.remove(cut);
if (bits.containsAll(allTriCutsButThisCut)) {
if (!bits.contains(cut)) {
- if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+ if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
cutVertexZ[cut.ordinal()][TRIDENT].fill(v0Vtx.z());
}
cutVertexMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass());
@@ -730,7 +754,7 @@
// triV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
// triXY.fill(v0Vtx.x(), v0Vtx.y());
// triZY.fill(v0Vtx.y(), v0Vtx.z());
- if (bestCandidate.getMomentum().magnitude() > radCut) {
+ if (bestCandidate.getMomentum().magnitude() > radCut * ebeam) {
triRadTrackTime2D.fill(tEle, tPos);
triRadTrackTimeDiff.fill(tEle - tPos);
// triRadZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
@@ -799,7 +823,7 @@
// vertV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
vertXY.fill(v0Vtx.x(), v0Vtx.y());
vertZY.fill(v0Vtx.y(), v0Vtx.z());
- if (bestCandidate.getMomentum().magnitude() > radCut) {
+ if (bestCandidate.getMomentum().magnitude() > radCut * ebeam) {
BilliorVertexer vtxFitter = new BilliorVertexer(TrackUtils.getBField(event.getDetector()).y());
vtxFitter.setBeamSize(beamSize);
@@ -808,6 +832,8 @@
billiorTracks.add(new BilliorTrack(positron.getTracks().get(0)));
vtxFitter.doBeamSpotConstraint(true);
BilliorVertex bsconVertex = vtxFitter.fitVertex(billiorTracks);
+ vtxFitter.doTargetConstraint(true);
+ BilliorVertex tarconVertex = vtxFitter.fitVertex(billiorTracks);
vertRadUnconBsconChi2.fill(unconVertex.getChi2(), bsconVertex.getChi2());
vertRadTrackTime2D.fill(tEle, tPos);
|