diff --git a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Alignment.java b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Alignment.java index 3c57d0b..b5d5a00 100644 --- a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Alignment.java +++ b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Alignment.java @@ -1140,6 +1140,9 @@ public static void main(String[] args){ parser.getOptionParser("-process").addOption("-time" , "0", "make time residual histograms (1=true, 0=false)"); parser.getOptionParser("-process").addOption("-residuals", "2", "fit residuals with double gaussian (2), single gaussian (1), or use mean (0)"); parser.getOptionParser("-process").addOption("-vertfit" , "5", "fit vertex plots with:\n" + + "\t\t- RG-E layout (10), dual target, \n" + + "\t\t- RG-A Spring18 layout (9)\n" + + "\t\t- RG-K layout (8), new cryotarget, \n" + "\t\t- RG-D layout (7), new cryotarget, \n" + "\t\t- RG-C layout (6),\n" + "\t\t- 4 gaussians (5),\n" + @@ -1176,6 +1179,9 @@ public static void main(String[] args){ parser.getOptionParser("-analyze").addOption("-shifts" , "0", "use event-by-event subtraction for unit shifts (1=on, 0=off)"); parser.getOptionParser("-analyze").addOption("-residuals", "2", "fit residuals (2), use mean (1), or use existing fit available (0)"); parser.getOptionParser("-analyze").addOption("-vertfit" , "5", "fit vertex plots with:\n" + + "\t\t- RG-E layout (10), dual target, \n" + + "\t\t- RG-A Spring18 layout (9)\n" + + "\t\t- RG-K layout (8), new cryotarget, \n" + "\t\t- RG-D layout (7), new cryotarget,\n" + "\t\t- RG-C layout (6),\n" + "\t\t- 4 gaussians (5),\n" + @@ -1207,6 +1213,9 @@ public static void main(String[] args){ parser.getOptionParser("-fit").addOption("-shifts" , "0", "use event-by-event subtraction for unit shifts (1=on, 0=off)"); parser.getOptionParser("-fit").addOption("-sector" , "1", "sector-dependent derivatives (1) or average (0)"); parser.getOptionParser("-fit").addOption("-vertfit" , "5", "fit vertex plots with:\n" + + "\t\t- RG-E layout (10), dual target, \n" + + "\t\t- RG-A Spring18 layout (9)\n" + + "\t\t- RG-K layout (8), new cryotarget, \n" + "\t\t- RG-D layout (7), new cryotarget, \n" + "\t\t- RG-C layout (6),\n" + "\t\t- 4 gaussians (5),\n" + diff --git a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Constants.java b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Constants.java index e17b9ff..e3759fd 100644 --- a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Constants.java +++ b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Constants.java @@ -49,9 +49,9 @@ public class Constants { public static int NPARS = 18; // size of unit shift (cm for ri_xyz, deg for ri_cxyz -// public static double[] UNITSHIFT = { 0.1, 0.8, 0.2, 0.2, 0.2, 0.4, -// 0.05, 0.4, 0.1, 0.2, 0.1, 0.2, -// 0.1, 0.8, 0.2, 0.2, 0.1, 0.4}; +// public static double[] UNITSHIFT = { 0.05, 0.4, 0.1, 0.1, 0.1, 0.1, +// 0.025, 0.2, 0.05, 0.05, 0.05, 0.05, +// 0.05, 0.4, 0.1, 0.05, 0.05, 0.05}; public static double[] UNITSHIFT = { 0.1, 0.8, 0.2, 0.2, 0.2, 0.2, 0.1, 0.8, 0.2, 0.2, 0.2, 0.2, 0.1, 0.8, 0.2, 0.2, 0.2, 0.2}; diff --git a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Histo.java b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Histo.java index 000631e..80007cd 100644 --- a/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Histo.java +++ b/dc/java/dc-alignment/src/main/java/org/clas/dc/alignment/Histo.java @@ -937,6 +937,9 @@ private static boolean fitVertex(int mode, H1F histo) { case 9: Histo.fitRGKVertex(histo); break; + case 10: + Histo.fitRGEVertex(histo); + break; default: if(histo.getFunction()!=null) { if(histo.getFunction().getChiSquare()>0) @@ -1431,7 +1434,6 @@ public static void fitRGDVertex(H1F histo) { } /** -<<<<<<< HEAD * 3-peaks vertex fitting function * Peaks correspond to: target windows and scattering chamber exit window * Initialized according to: @@ -1495,8 +1497,6 @@ public static void fitRGKVertex(H1F histo) { } /** -======= ->>>>>>> master * 4-peaks vertex fitting function * Peaks correspond to: target windows and scattering chamber exit window * Initialized according to: @@ -1552,6 +1552,75 @@ public static void fitRGAS18Vertex(H1F histo) { // if(f1_vtx.getParameter(6)10) scw = histo.getDataX(ibinsc)-mean+Constants.TARGETLENGTH/2; + double bg = histo.getBinContent((ibin1+ibin0)/2); + String function = "[ampU]*gaus(x,[exw]-[tl],[sigma])+" + + "[ampD]*gaus(x,[exw],[sigma])+" + + "[ampw]*gaus(x,[exw]+[wd],[sigma])+" + + "[ampw]*gaus(x,[exw]+[wd]*2,[sigma])/3+" + + "[bg]*gaus(x,[exw]-[tl]/2,[tl]*0.6)+" + + "[sc]*gaus(x,[exw]+[scw]-[tl]/2,[sigma])+" + + "[air]*gaus(x,[exw]+[scw]-[tl]/2+[adelta],[asigma])"; + F1D f1_vtx = new F1D("f"+histo.getName(), function, -10, 10); + f1_vtx.setLineColor(2); + f1_vtx.setLineWidth(2); + f1_vtx.setOptStat("111111111111111"); + f1_vtx.setParameter(0, amp); + f1_vtx.setParameter(1, mean); + f1_vtx.setParameter(2, Constants.TARGETLENGTH); + f1_vtx.setParLimits(2, Constants.TARGETLENGTH*0.9, Constants.TARGETLENGTH*1.1); + f1_vtx.setParameter(3, sigma); + f1_vtx.setParameter(4, amp); + f1_vtx.setParameter(5, amp); + f1_vtx.setParameter(6, Constants.WINDOWDIST); + f1_vtx.setParLimits(6, Constants.WINDOWDIST*0.9, Constants.WINDOWDIST*1.1); + f1_vtx.setParameter(7, bg); + f1_vtx.setParameter(8, sc); + f1_vtx.setParameter(9, scw); + f1_vtx.setParLimits(9, (Constants.SCEXIT)*0.7, (Constants.SCEXIT)*1.3); + f1_vtx.setParameter(10, air); + f1_vtx.setParameter(11, sigma*3); + f1_vtx.setParLimits(11, 0, sigma*8); + f1_vtx.setParameter(12, sigma*8); + f1_vtx.setRange(mean-Constants.TARGETLENGTH*2.0,Constants.SCEXIT+Constants.TARGETLENGTH*0.6); +// histo.setFunction(f1_vtx); + DataFitter.fit(f1_vtx, histo, "Q"); //No options uses error for sigma +// if(f1_vtx.getParameter(6)