Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN | |||
ResLimit.java | +101 | added 1.1 | |
RunMPAlignment.java | +81 | -5 | 1.1 -> 1.2 |
GlobalParameters.java | +5 | -3 | 1.1 -> 1.2 |
MPAlignmentParameters.java | +259 | -33 | 1.2 -> 1.3 |
+446 | -41 |
Large update: sparsify gl printout, added track separation for printout, added rotations
diff -N ResLimit.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ResLimit.java 30 May 2012 18:24:44 -0000 1.1 @@ -0,0 +1,101 @@
+/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.lcsim.hps.users.phansson; + +import java.util.*; + + + +/**Map< Integer, Map<Integer + * + * @author phansson + */ +public class ResLimit { + + Map< Integer, Map<Integer,Double[]> > map_top = new HashMap< Integer, Map<Integer,Double[]> >(); + Map< Integer, Map<Integer,Double[]> > map_bottom = new HashMap< Integer, Map<Integer,Double[]> >(); + + + public void ResLimit() { + + } + + + public void add(int side, int layer,int dir,double xmin,double xmax) { + Map< Integer, Map<Integer,Double[]> > map; + if(side==0) { + map = map_top; + } else { + map = map_bottom; + } + if(map.containsKey(layer)) { + Double v[] = {xmin,xmax}; + map.get(layer).put(dir,v); + } else { + map.put(layer,new HashMap<Integer,Double[]>()); + add(side,layer,dir,xmin,xmax); + } + + + } + + public double getMin(int side,int l,int d) { + return getLim(side,l,d)[0]; + + } + + public double getMax(int side,int l,int d) { + return getLim(side,l,d)[1]; + + } + + public Double[] getLim(int side,int l,int d) { + Map< Integer, Map<Integer,Double[]> > map; + if(side==0) { + map = map_top; + } else { + map = map_bottom; + } + if(!map.containsKey(l)) { + System.out.println("ERROR this layer " + l + " doesn't exist in ResLimit!"); + System.exit(1); + } + if(!map.get(l).containsKey(d)) { + System.out.println("ERROR this layer " + l + " doesn't have direction " + d + " in ResLimit!"); + System.exit(1); + } + return map.get(l).get(d); + } + + public void print() { + System.out.print("---Residual limits:"); + for(int side=0;side<2;++side) { + System.out.print("Side: " + side); + Map< Integer, Map<Integer,Double[]> > map; + if(side==0) { + map = map_top; + } else { + map = map_bottom; + } + Iterator it = map.keySet().iterator(); + System.out.printf("%5s %5.1d %5.1d \n","Layer","Dir","Min","Max"); + + while(it.hasNext()) { + Integer l = (Integer)it.next(); + Map<Integer,Double[]> m = map.get(l); + Iterator itt = m.keySet().iterator(); + while(itt.hasNext()) { + Integer dir = (Integer)itt.next(); + Double[] lim = m.get(dir); + System.out.printf("%5d %5d %5.1f %5.1f \n",l,dir,lim[0],lim[1]); + + } + } + } + } + + + +}
diff -u -r1.1 -r1.2 --- RunMPAlignment.java 23 May 2012 01:04:12 -0000 1.1 +++ RunMPAlignment.java 30 May 2012 18:24:44 -0000 1.2 @@ -1,14 +1,16 @@
package org.lcsim.hps.users.phansson;
+import hep.aida.*;
import org.lcsim.hps.users.phansson.MPAlignmentParameters;
-import hep.aida.IAnalysisFactory;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.lcsim.event.EventHeader; import org.lcsim.event.Track;
+import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA;
@@ -33,14 +35,29 @@
// note: this should be -1 for Test configurations and +1 for Full (v3.X and lower) configurations // this is set by the _config variable (detType in HeavyPhotonDriver) int flipSign = 1;
- boolean _DEBUG = true; -
+ boolean _DEBUG = false; + double _resLayer1MinY; +// _resLayer2MinY,_resLayer3MinY,_resLayer4MinY,_resLayer5MinY,_resLayer6MinY,_resLayer7MinY,_resLayer8MinY,_resLayer9MinY,_resLayer10MinY; +// double _resLayer1MinX,_resLayer2MinX,_resLayer3MinX,_resLayer4MinX,_resLayer5MinX,_resLayer6MinX,_resLayer7MinX,_resLayer8MinX,_resLayer9MinX,_resLayer10MinX; +// double _resLayer1MaxY,_resLayer2MaxY,_resLayer3MaxY,_resLayer4MaxY,_resLayer5MaxY,_resLayer6MaxY,_resLayer7MaxY,_resLayer8MaxY,_resLayer9MaxY,_resLayer10MaxY; +// double _resLayer1MaxX,_resLayer2MaxX,_resLayer3MaxX,_resLayer4MaxX,_resLayer5MaxX,_resLayer6MaxX,_resLayer7MaxX,_resLayer8MaxX,_resLayer9MaxX,_resLayer10MaxX; +// + + + + + + + + + +
public RunMPAlignment() { nlayers[0] = 10; _minLayers = 8; //// if (_config.contains("Test")) //// flipSign = -1;
- ap = new MPAlignmentParameters("/Users/phansson/work/HPS/software/reco/run/alignMP.txt");
+ ap = new MPAlignmentParameters("/Users/phansson/work/HPS/software/reco/run/alignMP.txt",_DEBUG);
}
@@ -51,10 +68,64 @@
_config = config; if (_config.contains("Test")) flipSign = -1;
- ap = new MPAlignmentParameters("/Users/phansson/work/HPS/software/reco/run/alignMP.txt");
+ ap = new MPAlignmentParameters("/Users/phansson/work/HPS/software/reco/run/alignMP.txt",_DEBUG);
}
+ + public void detectorChanged(Detector detector) { + + + + + //ap.setResLimits(); + for(int i=1;i<=10;++i) { + for(int j=0;j<3;++j) { + double xmin = -50; + double xmax = 50; +// if(i==3 && j==0) { +// xmin = -1; +// xmax = 0; +// } + //xmin = _resLayer1MinY; + //} + for(int side=0;side<2;++side) { + ap.setResLimits(side,i,j, xmin, xmax); + + } + } + } + + //ap.setResLimits(top/bottom,layer,direction: u/v/w, min, max); + ap.setResLimits(0,1,0, -0.3, 0.3); + ap.setResLimits(0,2,0, -0.3, 0.3); + ap.setResLimits(0,3,0, -0.4, 0.1); + ap.setResLimits(0,4,0, -0.2, 0.3); + ap.setResLimits(0,5,0, -0.1, 0.4); + ap.setResLimits(0,6,0, -0.3,0.1); + ap.setResLimits(0,7,0, -0.4, 0.45); + ap.setResLimits(0,8,0, -0.5, 0.3); + ap.setResLimits(0,9,0, -1, 1); + ap.setResLimits(0,10,0, -1, 1); + + ap.setResLimits(1,1,0, -0.2,0.2); + ap.setResLimits(1,2,0, -0.2, 0.2); + ap.setResLimits(1,3,0, -0.2, 0.2); + ap.setResLimits(1,4,0, -0.3, 0.3); + ap.setResLimits(1,5,0, -0.2, 0.4); + ap.setResLimits(1,6,0, -0.5, 0.); + ap.setResLimits(1,7,0, -0.7, 0.15); + ap.setResLimits(1,8,0, -0.1, 0.7); + ap.setResLimits(1,9,0, -1, 0.7); + ap.setResLimits(1,10,0, -0.5, 1); + + + + + } + + +
public void process( EventHeader event) {
@@ -106,4 +177,9 @@
Logger.getLogger(RunMPAlignment.class.getName()).log(Level.SEVERE, null, ex); } }
+ + + public void setResLayer1MinY(double val) { + this._resLayer1MinY = val; + }
}
diff -u -r1.1 -r1.2 --- GlobalParameters.java 24 May 2012 01:30:31 -0000 1.1 +++ GlobalParameters.java 30 May 2012 18:24:44 -0000 1.2 @@ -40,13 +40,15 @@
// 1-10 boolean ON;
- // u translations for each module
for(int iside=0;iside<2;++iside) { for(int ilayer=1;ilayer<11;++ilayer) { for (int itype=0;itype<2;++itype) { for (int idir=0;idir<3;++idir) {
- if(_sides[iside]==10000 && ilayer==3 && _types[itype]==1000 && _dirs[idir]==300) ON=true; - else ON=false;
+ //if(_sides[iside]==10000 && ilayer==3 && _types[itype]==1000 && _dirs[idir]==300) ON=true; + //if(ilayer==3 && _types[itype]==1000 && _dirs[idir]==300) ON=true; + ON =true; + //if(_types[itype]==1000 && _dirs[idir]==300) ON=true; + //else ON=false;
GlobalParameter gp = new GlobalParameter("test",_sides[iside],ilayer,_types[itype],_dirs[idir],ON); _gps.add(gp); }
diff -u -r1.2 -r1.3 --- MPAlignmentParameters.java 24 May 2012 01:30:31 -0000 1.2 +++ MPAlignmentParameters.java 30 May 2012 18:24:44 -0000 1.3 @@ -1,5 +1,6 @@
package org.lcsim.hps.users.phansson;
+import hep.aida.*;
import org.lcsim.hps.users.mgraham.alignment.*; import hep.physics.matrix.BasicMatrix; import hep.physics.matrix.MatrixOp;
@@ -30,8 +31,10 @@
import org.lcsim.fit.helicaltrack.MultipleScatter; import org.lcsim.fit.helicaltrack.TrackDirection; import org.lcsim.hps.event.HPSTransformations;
+import org.lcsim.hps.monitoring.AIDAFrame;
import org.lcsim.recon.tracking.seedtracker.SeedCandidate; import org.lcsim.recon.tracking.seedtracker.SeedTrack;
+import org.lcsim.util.aida.AIDA;
/** * Class to calculate and print the residuals and derivatives
@@ -55,22 +58,45 @@
private int _nlc = 5; //the five track parameters private int _ngl = 1; //delta(u) and delta(gamma) for each plane
- private GlobalParameters _glp;
+ private GlobalParameters _globalParameterList;
+ private List<GlobalParameter> _glp = new ArrayList<GlobalParameter>();
private BasicMatrix _dfdq; //private BasicMatrix _dfdp; private HelicalTrackFit _trk; private double[] _resid = new double[3]; private double[] _error = new double[3];
- private int[] _globalLabel = new int[1];
FileWriter fWriter; PrintWriter pWriter; Set<SiSensor> _process_sensors = new HashSet<SiSensor>(); private HPSTransformations _detToTrk;
- boolean _DEBUG = true;
+ boolean _DEBUG=false;
double smax = 1e3;
+ ResLimit _resLimits = new ResLimit();
- - public MPAlignmentParameters(String outfile) {
+ private AIDAFrame plotterFrame; + private AIDA aida = AIDA.defaultInstance(); + private IAnalysisFactory af = aida.analysisFactory(); + //private List< List<IHistogram1D> > hres = new ArrayList<List<IHistogram1D> >(); +// private List< List<IHistogram1D> > resy_org_layallhit = new ArrayList<List<IHistogram1D> >(); +// private List< List<IHistogram1D> > resy_org_layallsinglehit = new ArrayList<List<IHistogram1D> >(); +// private List< List<IHistogram1D> > resy_org_lay1hit = new ArrayList<List<IHistogram1D> >(); +// private List< IHistogram1D > nhits_tracker = new ArrayList<IHistogram1D>(); +// private List< List<IHistogram1D> > nhits_tracker_layer = new ArrayList<List<IHistogram1D> >(); +// private List< IHistogram1D > ncl_ecal = new ArrayList<IHistogram1D>(); +// private List< IHistogram1D > selcl_ecal_e = new ArrayList<IHistogram1D>(); +// private List< IHistogram1D > cl_ecal_e = new ArrayList<IHistogram1D>(); +// private List< IHistogram2D > ncl_ecal_map = new ArrayList<IHistogram2D>(); +// private List< IHistogram2D > nselcl_ecal_map = new ArrayList<IHistogram2D>(); +// private List< IHistogram2D> resy_2d_org_layallhit = new ArrayList<IHistogram2D>(); +// private List< IHistogram2D> resy_2d_org_layallsinglehit = new ArrayList<IHistogram2D>(); +// + + + + + + public MPAlignmentParameters(String outfile, boolean debug) { + _DEBUG = debug;
_detToTrk = new HPSTransformations(); try { //open things up
@@ -80,11 +106,88 @@
Logger.getLogger(RunAlignment.class.getName()).log(Level.SEVERE, null, ex); }
- _glp = new GlobalParameters(); - if(_DEBUG) _glp.print();
+ _globalParameterList = new GlobalParameters(); + if(_DEBUG) _globalParameterList.print(); + + + + + + + + aida.tree().cd("/"); + plotterFrame = new AIDAFrame(); + plotterFrame.setTitle("HPS Alignment Plots"); + + + + //IHistogramFactory hf = aida.histogramFactory(); + String[] side = {"top","bottom"}; + String[] direction = {"u","v","w"}; + + for (int d=0;d<3;++d) { + + for (int s=0;s<2;++s) { + // if(iSide==1) continue; + IPlotter plotter_res = af.createPlotterFactory().create(); + plotter_res.createRegions(5,2,0); + plotter_res.setTitle("res_" + direction[d] + " " + side[s]); + IPlotter plotter_reserr = af.createPlotterFactory().create(); + plotter_reserr.createRegions(5,2,0); + plotter_reserr.setTitle("reserr_" + direction[d] + " " + side[s]); + IPlotter plotter_respull = af.createPlotterFactory().create(); + plotter_respull.createRegions(5,2,0); + plotter_respull.setTitle("respull_" + direction[d] + " " + side[s]); + + for (int iLayer=1;iLayer<11;++iLayer) { + double xmin,xmax; + if(direction[d]=="v") { + xmin = -100; + xmax = 100; + } else { + xmin = -2; + xmax = 2; + + } + // IHistogram h = aida.histogram1D("res_"+direction[d]+"_layer" + (iLayer) + "_" + side[iSide] , 50, -10, 10); + IHistogram h = aida.histogram1D("res_"+direction[d]+"_layer" + (iLayer) + "_" + side[s] , 50, xmin, xmax); + IHistogram h1 = aida.histogram1D("reserr_"+direction[d]+"_layer" + (iLayer) + "_" + side[s] , 50, 0, 1); + IHistogram h2 = aida.histogram1D("respull_"+direction[d]+"_layer" + (iLayer) + "_" + side[s] , 50, -10, 10); + + int region = (iLayer-1);//*2+iSide; + + plotter_res.region(region).plot(h); + plotter_reserr.region(region).plot(h1); + plotter_respull.region(region).plot(h2); + + } + + //plotter_res.show(); + plotterFrame.addPlotter(plotter_res); + plotterFrame.addPlotter(plotter_reserr); + plotterFrame.addPlotter(plotter_respull); + } + } + + plotterFrame.pack(); + plotterFrame.setVisible(true); + + +
+ + + } + + public void setResLimits(int l,int d, double low,double high) { + _resLimits.add(0,l,d, low,high); //top + _resLimits.add(1,l,d, low,high); //bottom
}
+ public void setResLimits(int s, int l,int d, double low,double high) { + _resLimits.add(s,l,d, low,high); + } +
public void PrintResidualsAndDerivatives(Track track) { SeedTrack st = (SeedTrack) track;
@@ -92,6 +195,7 @@
Map<HelicalTrackHit, MultipleScatter> msmap = seed.getMSMap(); _trk = seed.getHelix(); List<TrackerHit> hitsOnTrack = track.getTrackerHits();
+ pWriter.printf("TRACK\n");
for (TrackerHit hit : hitsOnTrack) { HelicalTrackHit htc = (HelicalTrackHit) hit; double msdrphi = msmap.get(htc).drphi();
@@ -106,7 +210,9 @@
CalculateGlobalDerivatives(cl); CalculateResidual(cl, msdrphi, msdz); // CalculateResidual(cl, 0,0);
- PrintStripResiduals(cl);
+ //PrintStripResiduals(cl);
+ PrintStripResidualsNew(cl);
+
} } //AddTarget(0.1, 0.02);
@@ -187,19 +293,23 @@
//Find out which global derivative this is //align only layer 3 on top side!
- int side = 10000;
+ int side = 20000;
if( strip.origin().z()>0) side = 10000;
- else side = 20000; - int l = strip.layer();
int type = 1000;
- int dir = 300; - int label = side + type + dir + l;
//if(strip.origin().z()>0 && strip.layer()==3) {
+ //Flag to tell if this residual is affected by the given global parameter + boolean useGL = false; + + //Clear the old parameter list + _glp.clear(); +
//Go through each gl parameter and see if it has non-zero contribution
- for (GlobalParameter gp : _glp.getList()) { - //if(gp.active()==false) continue; -
+ for (GlobalParameter gp : _globalParameterList.getList()) { + + + useGL = false; +
dfdpTRACK[0][0] = 0; dfdpTRACK[1][0] = 0; dfdpTRACK[2][0] = 0;
@@ -213,6 +323,10 @@
//Calcuate dfdp derivatives depending on type of global parameter if(gp.getType()==1000) {
+ + //This residual is affected by a global parameter + useGL = true; +
//translation if(gp.getDirection()==100) { //x - tracking frame --> beamline direction
@@ -232,26 +346,59 @@
dfdpTRACK[0][0] = 0; //df/dx dfdpTRACK[1][0] = 0; //df/dy dfdpTRACK[2][0] = 1; //df/dz
+ } + + }//type + else if(gp.getType()==2000) { + //rotation + + //This residual is affected by a global parameter + useGL = true; + + + if(gp.getDirection()==100) { + //x - tracking frame --> beamline direction + dfdpTRACK[0][0] = 0; //df_x/d(alpha) + dfdpTRACK[1][0] = -1; //df_y/d(alpha) + dfdpTRACK[2][0] = 1; //df_z/d(alpha) + } + else if(gp.getDirection()==200) { + //y - tracking frame --> almost unmeasured coordinate direction + dfdpTRACK[0][0] = 1; //df_x/d(beta) + dfdpTRACK[1][0] = 0; //df_y/d(beta) + dfdpTRACK[2][0] = -1; //df_z/d(beta) + } + else { + // Rotation around z + dfdpTRACK[0][0] = -1; //df_x/d(gamma) + dfdpTRACK[1][0] = 1; //df_y/d(gamma) + dfdpTRACK[2][0] = 0; //df_z/d(gamma)
} }//type
- }//layer -
+ }//layer
}//side
- //Put it into a matrix to be able to transform easily - BasicMatrix _dfdpTRACK = FillMatrix(dfdpTRACK, 3, 1); - //Get transformation matrix from tracking frame to sensor frame where the residuals are calculated - Hep3Matrix trkToStrip = getTrackToStripRotation(strip); - //Transform derivatives to sensor frame! - BasicMatrix dfdp = (BasicMatrix) MatrixOp.mult(trkToStrip, _dfdpTRACK); - //Add it to the global parameter object - gp.setDfDp(dfdp); - if (_DEBUG) { - System.out.printf("dfdz = %5.5f %5.5f %5.5f GL%d name: %s\n", gp.dfdp(0), gp.dfdp(1), gp.dfdp(2), gp.getLabel(),gp.getName()); - - }
+ if(useGL) { + + //Put it into a matrix to be able to transform easily + BasicMatrix _dfdpTRACK = FillMatrix(dfdpTRACK, 3, 1); + //Get transformation matrix from tracking frame to sensor frame where the residuals are calculated + Hep3Matrix trkToStrip = getTrackToStripRotation(strip); + //Transform derivatives to sensor frame! + BasicMatrix dfdp = (BasicMatrix) MatrixOp.mult(trkToStrip, _dfdpTRACK); + //Add it to the global parameter object + gp.setDfDp(dfdp); + _glp.add(gp); + if (_DEBUG) { + System.out.printf("dfdp = %5.5f %5.5f %5.5f GL%d name: %s\n", gp.dfdp(0), gp.dfdp(1), gp.dfdp(2), gp.getLabel(),gp.getName()); + } + } else { + if (_DEBUG) { + System.out.printf("Global parameters %s name %s didn't affect this strip on side %d and layer %d\n",gp.getLabel(),gp.getName(),side,strip.layer()); + } + }
} //gps
@@ -290,7 +437,7 @@
double vmeas = 0; double vError = (strip.vmax() - strip.vmin()) / Math.sqrt(12); double wmeas = 0;
- double wError = 0.001;
+ double wError = 10.0/Math.sqrt(12); //0.001;
//System.out.println("strip error="+uError+"; ms error ="+msuError); _resid[0] = umeas - umc; _error[0] = Math.sqrt(uError * uError + msuError * msuError);
@@ -395,7 +542,7 @@
} //String[] p = {"u-displacement"}; System.out.println("global parameter derivatives");
- for (GlobalParameter gl : _glp.getList()) {
+ for (GlobalParameter gl : _glp) {
System.out.printf("%s %5.5e %5.5e %5.5e %5d %10s\n", "", gl.dfdp(0), gl.dfdp(1), gl.dfdp(2), gl.getLabel(),gl.getName()); //System.out.printf("%s %5.5e %5.5e %5.5e %5d\n", p[j], _dfdp.e(0, j), _dfdp.e(1, j), _dfdp.e(2, j), _globalLabel[j]); }
@@ -407,13 +554,80 @@
for (int i = 0; i < _nlc; i++) { pWriter.printf("%5.5e %5.5e %5.5e\n", _dfdq.e(0, i), _dfdq.e(1, i), _dfdq.e(2, i)); }
- for (GlobalParameter gl: _glp.getList()) {
+ for (GlobalParameter gl: _glp) {
if(gl.active()){ pWriter.printf("%5.5e %5.5e %5.5e %5d\n", gl.dfdp(0), gl.dfdp(1), gl.dfdp(2), gl.getLabel()); } } }
+ private void PrintStripResidualsNew(HelicalTrackStrip strip) { + if (_DEBUG) { + int s = 1; + if(strip.origin().z()>0) s = 0; + System.out.printf("Strip Layer = %4d\n", strip.layer()); + System.out.printf("Residuals (u,v,w) : %5.5e %5.5e %5.5e (limits: [%.1e,%.1e] [%.1e,%.1e] [%.1e,%.1e])\n" + , _resid[0], _resid[1], _resid[2], + _resLimits.getMin(s,strip.layer(),0), + _resLimits.getMax(s,strip.layer(),0), + _resLimits.getMin(s,strip.layer(),1), + _resLimits.getMax(s,strip.layer(),1), + _resLimits.getMin(s,strip.layer(),2), + _resLimits.getMax(s,strip.layer(),2)); + System.out.printf("Errors (u,v,w) : %5.5e %5.5e %5.5e\n", _error[0], _error[1], _error[2]); + String[] q = {"d0", "z0", "slope", "phi0", "R"}; + System.out.println("track parameter derivatives"); + for (int i = 0; i < _nlc; i++) { + System.out.printf("%s %5.5e %5.5e %5.5e\n", q[i], _dfdq.e(0, i), _dfdq.e(1, i), _dfdq.e(2, i)); + } + //String[] p = {"u-displacement"}; + System.out.println("global parameter derivatives"); + for (GlobalParameter gl : _glp) { + System.out.printf("%s %5.5e %5.5e %5.5e %5d %10s\n", "", gl.dfdp(0), gl.dfdp(1), gl.dfdp(2), gl.getLabel(),gl.getName()); + //System.out.printf("%s %5.5e %5.5e %5.5e %5d\n", p[j], _dfdp.e(0, j), _dfdp.e(1, j), _dfdp.e(2, j), _globalLabel[j]); + } + + } + pWriter.printf("%d\n", strip.layer()); + String[] d = {"u","v","w"}; + for(int j=0;j<3;++j){ + String side = "bottom"; + int s = 1; + if( strip.origin().z()>0) { + side = "top"; + s = 0; + } + + if(s!=0) continue; + + if(!isAllowedResidual(s,strip.layer(),j,_resid[j])) { + if(_DEBUG) System.out.println("Layer " + strip.layer() + " in " + d[j] + " res " + _resid[j] + " +- " + _error[j] + " was outside allowed range"); + continue; + } +//// if(Math.abs(_resid[j]/_error[j])>3) { +//// if(_DEBUG) System.out.println("Layer " + strip.layer() + " in " + d[j] + " res " + _resid[j] + " +- " + _error[j] + " had too high pull"); +//// continue; +//// } + pWriter.printf("res_%s %5.5e %5.5e \n", d[j], _resid[j], _error[j]); + for (int i = 0; i < _nlc; i++) { + pWriter.printf("lc_%s %5.5e \n", d[j], _dfdq.e(j, i)); + } + for (GlobalParameter gl: _glp) { + if(gl.active()){ + pWriter.printf("gl_%s %5.5e %5d\n", d[j], gl.dfdp(j), gl.getLabel()); + } + } + + aida.histogram1D("res_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_resid[j]); + aida.histogram1D("reserr_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_error[j]); + aida.histogram1D("respull_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_resid[j]/_error[j]); + + + } + } + + +
private Hep3Matrix getTrackToStripRotation(HelicalTrackStrip strip) { //This function transforms the hit to the sensor coordinates
@@ -661,4 +875,16 @@
// System.out.println( _trk.xc()+ "; "+_trk.yc()); // System.out.println( _trk.x0()+ "; "+_trk.y0()); }
+ + + + private boolean isAllowedResidual(int side,int layer,int d,double res) { + + if(res <_resLimits.getMin(side,layer,d)) return false; + if(res >_resLimits.getMax(side,layer,d)) return false; + return true; + + } + +
}
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1