/lab/sipmscan/trunk/doc/README |
---|
529,7 → 529,10 |
= 8. Change log === |
=================== |
5.10.2016 (Current Rev) |
2;12.2016 (Current Rev) |
a) Mostly fixed the fitting procedure for relative PDE point estimation. The maximum peak fit error should now work correctly, when excluding points that are far away from the relative PDE curve. |
5.10.2016 (Rev 174) |
a) Fixed a couple of bugs and layout positions. |
b) Added settings files for measurement and analysis settings. With this, everytime a new measurement or a new analysis is |
ran, the selected settings are saved to a file. This way, if the program crashes, the selected settings will be automatically |
/lab/sipmscan/trunk/doc/documentation.html |
---|
511,8 → 511,13 |
<div class="backtop"><a href="#top">Back to top</a></div> |
<h2 id="changelog">8. Change log</h2> |
<p>5.10.2016 (Current Rev):</p> |
<p>2.12.2016 (Current Rev):</p> |
<ol type="a"> |
<li>Mostly fixed the fitting procedure for relative PDE point estimation. The maximum peak fit error should now work correctly, when excluding points that are far away from the relative PDE curve.</li> |
</ol><br/> |
<p>5.10.2016 (Rev 174):</p> |
<ol type="a"> |
<li>Fixed a couple of bugs and layout positions.</li> |
<li>Added settings files for measurement and analysis settings. With this, everytime a new measurement or a new analysis is ran, the selected settings are saved to a file. This way, if the program crashes, all settings will be automatically filled in.</li> |
</ol><br/> |
/lab/sipmscan/trunk/src/analysis.cpp |
---|
59,7 → 59,6 |
else if(analTab->GetCurrent() == 1) // Relative PDE |
{ |
relPde->widgetChBox[0]->SetState(kButtonDown); |
relPde->widgetChBox[1]->SetState(kButtonUp); |
midPeak->widgetChBox[0]->SetState(kButtonUp); |
zeroAngle->widgetNE[0]->SetNumber(0.00); |
} |
695,7 → 694,7 |
gVirtualX->Update(1); |
// Check if the checkbox for no peaks is selected - TODO: Still need the situation when we do not have a peaked ADC spectrum |
if(relPde->widgetChBox[1]->IsDown()) |
/* if(relPde->widgetChBox[1]->IsDown()) |
{ |
printf("PhotonMu(): ADC spectrum has no peak structure.\n"); |
nopeaks = 1; |
712,7 → 711,7 |
return; |
} |
} |
}*/ |
// Start if we select at least one file |
if(nrfiles > 0) |
1196,6 → 1195,7 |
// Get next point values (if zero value -> need to add the dark hist value again) |
pointest[10] = angle[i]; |
pointest[11] = muval[i]; |
// printf("Last point = [%lf,%lf]\n", pointest[10], pointest[11]); |
// Check if next point has larger error than acceptable (if yes, set exclude signal to true), reuse meansel[0] |
meansel[0] = PointEstimate(5, pointest); // PointEstimate only works with very small step size |
1205,6 → 1205,12 |
exclude = true; |
} |
if(isinf(meansel[0])) |
{ |
printf("PhotonMu(): Point (%lf, %lf) excluded due to being infinite: %lf\n", pointest[10], pointest[11], meansel[0]); |
exclude = true; |
} |
// Value with 0 angle and dark histogram are always needed, so should not be excluded |
if(i == darkhist) |
exclude = false; |
1231,6 → 1237,8 |
pointest[2*m+1] = muval[i]; |
} |
printf("Exclude signal = %d\n", (int)exclude); |
// Run only if we have a dark run histogram and middle pedestal peak estimation |
if( (darkhist != -1) && midPeak->widgetChBox[0]->IsDown() ) |
{ |
/lab/sipmscan/trunk/src/separate_functions.cpp |
---|
222,17 → 222,22 |
double A, B; |
double esty; |
// printf("PointEstimate points: "); |
for(int i = 0; i < nrp; i++) |
{ |
// printf("[%lf,%lf], ", points[2*i], points[2*i+1]); |
accx += points[2*i]; |
accy += points[2*i+1]; |
accxy += points[2*i]*points[2*i+1]; |
accx2 += points[2*i]*points[2*i]; |
} |
// printf("\n"); |
A = (accx2*accy - accx*accxy)/(nrp*accx2 - accx*accx); |
B = (nrp*accxy - accx*accy)/(nrp*accx2 - accx*accx); |
// printf("Fiting function = %lf + %lf*x\n", A, B); |
esty = A + B*points[2*nrp]; |
if(DBGSIG) printf("PointEstimate(): A = %lf, B = %lf, estimate = %lf, real = %lf, error = %lf\n", A, B, esty, points[2*nrp+1], abs(esty - points[2*nrp+1])/points[2*nrp+1]); |
/lab/sipmscan/trunk/src/sipmscan.cpp |
---|
924,7 → 924,7 |
fV1 = new TGCompositeFrame(fT1, subgroup[0], subgroup[1], kVerticalFrame | kFixedWidth | kFixedHeight); |
// Check button to toggle normalization |
if(DBGSIG > 1) printf("AppLayout(): Creating TSubStructure *relPde -> 2 check buttons (relative pde, normalization)\n"); |
if(DBGSIG > 1) printf("AppLayout(): Creating TSubStructure *relPde -> 1 check buttons (normalization)\n"); |
relPde = new TSubStructure(); |
checksel = new int; |
*checksel = 1; |