Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions dc/java/dc-alignment/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.clas.detector</groupId>
<artifactId>dc-alignment</artifactId>
<version>2.4</version>
<version>2.5</version>
<packaging>jar</packaging>

<dependencies>
Expand Down Expand Up @@ -57,7 +57,7 @@
</repository>
<repository>
<id>jhep-maven</id>
<url>https://clasweb.jlab.org/jhep/maven</url>
<url>https://clasweb.jlab.org/.jhep/maven</url>
</repository>
</repositories>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,14 @@ else if(Math.abs(vertex)==6)
Constants.initTargetPars(Constants.RGCSUMMER2022);
else if(Math.abs(vertex)==7)
Constants.initTargetPars(Constants.RGDFALL2023);
else if(Math.abs(vertex)==8)
Constants.initTargetPars(Constants.RGASPRING2018);
else if(Math.abs(vertex)==9)
Constants.initTargetPars(Constants.RGKSPRING2024);
else if(Math.abs(vertex)==10)
Constants.initTargetPars(Constants.RGESPRING2024);
else if(Math.abs(vertex)==11)
Constants.initTargetPars(Constants.RGLSPRING2025);
}
if(vertex<0) vertex=0;
}
Expand Down Expand Up @@ -231,13 +239,13 @@ public void addHistoSet(String name, Histo histo) {
this.histos.put(name, histo);
}

public void analyzeHistos(int resFit, int vertexFit, String vertexPar, boolean test) {
public void analyzeHistos(int resFit, int vertexFit, String vertexPar, String test) {
this.printConfig(resFit, "resFit", "");
this.printConfig(vertexFit, "vertexFit", "");
this.initMeasurementWeights(1.0);
this.initVertexPar(vertexFit, vertexPar);
for(String key : histos.keySet()) {
if(test && !key.equals("nominal")) continue;
if(histos.containsKey(test) && !key.equals(test)) continue;
LOGGER.log(LEVEL,"\nAnalyzing histos for variation " + key);
histos.get(key).analyzeHisto(resFit, vertexFit);
for(int i=0; i<Constants.NPARS; i++)
Expand All @@ -247,23 +255,35 @@ public void analyzeHistos(int resFit, int vertexFit, String vertexPar, boolean t
}

private void printExclusionStats() {
LOGGER.log(Level.WARNING, "\nEcluded measurements because of failed fits:");
LOGGER.log(Level.WARNING, "\nExcluded measurements because of failed fits:");
int[] nFailedByKey = new int[histos.size()];
int nfits = Constants.NSECTOR*(thetaBins.length-1)*(phiBins.length-1)*(1+Constants.NLAYER);
for (int is = 0; is < Constants.NSECTOR; is++) {
String si = "";
String ki = "";
int nexclude = 0;
for (int it = 1; it < thetaBins.length; it++) {
for (int ip = 1; ip < phiBins.length; ip++) {
for (int il = 0; il < Constants.NLAYER + Constants.NTARGET; il++) {
for (int il = 0; il <= Constants.NLAYER; il++) {
if (Constants.MEASWEIGHTS[is][it][ip][il] == 0) {
nexclude++;
si += String.format("\n\t\ttheta bin=%d phi bin=%d layer=%d", it, ip, il);
si += String.format("\n\t\ttheta bin=%d phi bin=%d layer=%d\t", it, ip, il);
for(int ikey=0; ikey<histos.size(); ikey++) {
String key = (String) histos.keySet().toArray()[ikey];
if(!histos.get(key).getParStatus(is+1, it, ip)[il]) nFailedByKey[ikey]++;
// si += " " + (histos.get(key).getParStatus(is+1, it, ip)[il] ? 1 : 0 );
}
}
}
}
}
si = "\tSector " + (is+1) + String.format(": %d/%d", nexclude, (thetaBins.length-1)*(phiBins.length-1)*(Constants.NLAYER+Constants.NTARGET)) + si;
si = "\tSector " + (is+1) + String.format(": %d/%d", nexclude, nfits/Constants.NSECTOR) + "\t\t\t" + si;
LOGGER.log(Level.WARNING, si);
}
for(int ikey=0; ikey<histos.size(); ikey++) {
String key = (String) histos.keySet().toArray()[ikey];
LOGGER.log(Level.WARNING, String.format("\n\t%10s: %d/(%d+%d)",key,nFailedByKey[ikey],nfits*Constants.NLAYER/(1+Constants.NLAYER),nfits/(1+Constants.NLAYER)));
}
}

private double getShift(String key, int sector, int layer, int itheta, int iphi) {
Expand Down Expand Up @@ -799,10 +819,11 @@ private DataGroup getVertexGraph(String parameter, Table alignment) {
gr_fit.addPoint(phi, shiftRes/Constants.SCALE, 0.0, errorRes/Constants.SCALE);
}
}
gr_fit.setTitle("Layer " + (il+1));
gr_fit.setTitle("Layer " + il);
gr_fit.setTitleX("#phi (deg)");
gr_fit.setTitleY("#Deltaz (cm)");
gr_fit.setMarkerColor(this.markerColor[it-1]);
gr_fit.setMarkerColor(this.markerColor[(it-1)%this.markerColor.length]);
gr_fit.setMarkerStyle(this.markerStyle[2 + (int) ((it-1)/this.markerColor.length)]);
gr_fit.setMarkerSize(this.markerSize);
if(gr_fit.getDataSize(0)>0) {
if(!graphs.containsKey(i))
Expand Down Expand Up @@ -865,7 +886,7 @@ private DataGroup getRegionHistograms(String parameter, Table alignment, int ico
residuals.addDataSet(hi_res, ir*Constants.NSECTOR + is);
for(int it=1; it<thetaBins.length; it++) {
for(int ip=1; ip<phiBins.length; ip++) {
for (int il = 0; il < Constants.NLAYER/Constants.NREGION; il++) {
for (int il = 1; il < Constants.NLAYER/Constants.NREGION; il++) {
int ilayer = il+ir*Constants.NLAYER/Constants.NREGION;
double shift = histos.get("nominal").getParValues(parameter, sector, it, ip)[ilayer];
if(!(parameter.equals("time") || parameter.equals("LR"))) {
Expand Down Expand Up @@ -1169,7 +1190,7 @@ public void saveHistos(String fileName) {
public static void main(String[] args){

Alignment align = new Alignment();
align.initLogger(Level.CONFIG);
align.initLogger(Level.INFO);
String[] inputs = align.getInputs();


Expand All @@ -1189,9 +1210,10 @@ 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-L layout (11), \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-K layout (9), new cryotarget, \n" +
"\t\t- RG-A Spring18 layout (8)\n" +
"\t\t- RG-D layout (7), new cryotarget, \n" +
"\t\t- RG-C layout (6),\n" +
"\t\t- 4 gaussians (5),\n" +
Expand All @@ -1217,7 +1239,7 @@ public static void main(String[] args){
parser.getOptionParser("-process").addOption("-frame" , "0", "translations defined in the CLAS12 tilted sector frame (0) or sector frame (1)");
parser.getOptionParser("-process").addOption("-global" , "0", "r1 translations defined as relative (0) or global (1) translations");
parser.getOptionParser("-process").addOption("-verbose" , "0", "global fit verbosity (1/0 = on/off)");
parser.getOptionParser("-process").addOption("-test" , "0", "analyze nominal geometry only for fit testing (1/0 = on/off)");
parser.getOptionParser("-process").addOption("-test" , "", "geometry variation to be analyze only for fit testing");

// valid options for histogram-base analysis
parser.addCommand("-analyze", "analyze histogram files");
Expand All @@ -1228,9 +1250,10 @@ 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-L layout (11), \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-K layout (9), new cryotarget, \n" +
"\t\t- RG-A Spring18 layout (8)\n" +
"\t\t- RG-D layout (7), new cryotarget,\n" +
"\t\t- RG-C layout (6),\n" +
"\t\t- 4 gaussians (5),\n" +
Expand All @@ -1252,7 +1275,7 @@ public static void main(String[] args){
parser.getOptionParser("-analyze").addOption("-frame" , "0", "translations defined in the CLAS12 tilted sector frame (0) or sector frame (1)");
parser.getOptionParser("-analyze").addOption("-global" , "0", "r1 translations defined as relative (0) or global (1) translations");
parser.getOptionParser("-analyze").addOption("-verbose" , "0", "global fit verbosity (1/0 = on/off)");
parser.getOptionParser("-analyze").addOption("-test" , "0", "analyze nominal geometry only for fit testing (1/0 = on/off)");
parser.getOptionParser("-analyze").addOption("-test" , "", "geometry variation to be analyze only for fit testing, e.g. nominal, r1_x, ...");

// valid options for final minuit-fit
parser.addCommand("-fit", "perform misalignment fit");
Expand All @@ -1262,9 +1285,10 @@ 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-L layout (11), \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-K layout (9), new cryotarget, \n" +
"\t\t- RG-A Spring18 layout (8)\n" +
"\t\t- RG-D layout (7), new cryotarget, \n" +
"\t\t- RG-C layout (6),\n" +
"\t\t- 4 gaussians (5),\n" +
Expand Down Expand Up @@ -1319,7 +1343,7 @@ public static void main(String[] args){
boolean tscFrame = parser.getOptionParser("-process").getOption("-frame").intValue()==0;
boolean r1Global = parser.getOptionParser("-process").getOption("-global").intValue()!=0;
boolean verbose = parser.getOptionParser("-process").getOption("-verbose").intValue()!=0;
boolean testFit = parser.getOptionParser("-process").getOption("-test").intValue()!=0;
String testFit = parser.getOptionParser("-process").getOption("-test").stringValue();
openWindow = parser.getOptionParser("-process").getOption("-display").intValue()!=0;
frameTitle = frameTitle + " - " + nominal;
if(!openWindow) System.setProperty("java.awt.headless", "true");
Expand Down Expand Up @@ -1354,9 +1378,9 @@ public static void main(String[] args){

if(parser.getCommand().equals("-analyze")) {
String namePrefix = parser.getOptionParser("-analyze").getOption("-o").stringValue();
String histoName = "histo.hipo";
String histoName = null;
if(!namePrefix.isEmpty()) {
histoName = namePrefix + "_" + histoName;
histoName = namePrefix + "_histo.hipo";
}
String optStats = parser.getOptionParser("-analyze").getOption("-stats").stringValue();
int residuals = parser.getOptionParser("-analyze").getOption("-residuals").intValue();
Expand All @@ -1371,7 +1395,7 @@ public static void main(String[] args){
boolean tscFrame = parser.getOptionParser("-analyze").getOption("-frame").intValue()==0;
boolean r1Global = parser.getOptionParser("-analyze").getOption("-global").intValue()!=0;
boolean verbose = parser.getOptionParser("-analyze").getOption("-verbose").intValue()!=0;
boolean testFit = parser.getOptionParser("-analyze").getOption("-test").intValue()!=0;
String testFit = parser.getOptionParser("-analyze").getOption("-test").stringValue();
openWindow = parser.getOptionParser("-analyze").getOption("-display").intValue()!=0;
if(!openWindow) System.setProperty("java.awt.headless", "true");
if(verbose) align.setLoggerLevel(Level.FINE);
Expand All @@ -1384,7 +1408,7 @@ public static void main(String[] args){
align.initConstants(11, initVar, previousVar, compareVar);
align.readHistos(inputHisto, optStats);
align.analyzeHistos(residuals, vertexFit, vertexPar, testFit);
align.saveHistos(histoName);
if(histoName != null) align.saveHistos(histoName);
}

if(parser.getCommand().equals("-fit")) {
Expand All @@ -1411,7 +1435,7 @@ public static void main(String[] args){
align.setFitOptions(sector, iter, tscFrame, r1Global);
align.initConstants(11, initVar, previousVar, compareVar);
align.readHistos(histoName, optStats);
align.analyzeHistos(0, -vertexFit, vertexPar, false);
align.analyzeHistos(0, -vertexFit, vertexPar, "");
}

if(openWindow) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class Constants {
public static int VDFBINS = 200;
public static double VDFMIN = -5.0;
public static double VDFMAX = 5.0;
public static double CHI2MAX = 2.5;
public static double CHI2MAX = 5;


// global fit
Expand Down Expand Up @@ -89,12 +89,16 @@ public class Constants {
// - distance between cell exit window and indulation foil,
// - distance beetween the scattering chamber exit window and the target center
public static final double[] DEFAULT = {-0.5, 5.0, 6.8, 27.3};
public static final double[] RGASPRING2018 = { 0.0, 5.0, 2.8, 28.6};
public static final double[] RGAFALL2018 = {-0.5, 5.0, 2.8, 28.4};
public static final double[] RGBSPRING2019 = {-0.5, 5.0, 6.8, 28.4};
public static final double[] RGFSUMMER2020 = {-32, 5.0, 6.8, 27.3};
public static final double[] RGMFALL2021 = {-0.5, 5.0, 6.8, 27.3};
public static final double[] RGCSUMMER2022 = {-1.4,5.25, 8.3, 14.3};
public static final double[] RGDFALL2023 = {-2.5, 5.0, 3.0, 27.1};
public static final double[] RGDFALL2023 = {-3.0, 5.0, 3.0, 27.1};
public static final double[] RGKSPRING2024 = {-0.5, 5.0, 0.0, 26.5}; // warm
public static final double[] RGESPRING2024 = {-5.5, 2.2, 2.0, 25.9};
public static final double[] RGLSPRING2025 = {19.2,50.4, 0.9, 0.0};

// target parameters used for vertex fit initialization
public static double TARGETPOS = DEFAULT[0];
Expand All @@ -114,23 +118,25 @@ public static void initTargetPars(double[] pars) {
if(pars.length>0 && pars.length<=DEFAULT.length) {
TARGETPOS = pars[0];
TARGETCENTER = pars[0];
System.out.println("[CONFIG] target parameters set to:");
System.out.println(" - TARGETPOS = " + TARGETPOS);
if(pars.length>1) {
TARGETLENGTH = pars[1];
TARGETCENTER = pars[0]-pars[1]/2;
System.out.println(" - TARGETLENGTH = " + TARGETLENGTH);
}
if(pars.length>2)
if(pars.length>2) {
WINDOWDIST = pars[2];
if(pars.length>3)
System.out.println(" - WINDOWDIST = " + WINDOWDIST);
}
if(pars.length>3) {
SCEXIT = pars[3];
System.out.println(" - SCEXIT = " + SCEXIT);
}
}
else {
System.out.println("[WARNING] wrong number of target parameters. Number is " + pars.length + " instead of [1:4]");
}
System.out.println("[CONFIG] target parameters set to:");
System.out.println(" - TARGETPOS = " + TARGETPOS);
System.out.println(" - TARGETLENGTH = " + TARGETLENGTH);
System.out.println(" - WINDOWDIST = " + WINDOWDIST);
System.out.println(" - SCEXIT = " + SCEXIT);
}

}
Loading
Loading