added view_packing option in the PLOT block
This commit is contained in:
@ -1392,7 +1392,7 @@ void PMusrCanvas::HandleDataSet(unsigned int plotNo, unsigned int runNo, PRunDat
|
||||
end = data->fDataTimeStart + data->fValue.size()*data->fDataTimeStep;
|
||||
size = data->fValue.size();
|
||||
|
||||
cout << endl << ">> PMusrCanvas::HandleDataSet(): data->fDataTimeStart = " << data->fDataTimeStart << ", data->fDataTimeStep = " << data->fDataTimeStep << endl;
|
||||
//cout << endl << ">> PMusrCanvas::HandleDataSet(): data->fDataTimeStart = " << data->fDataTimeStart << ", data->fDataTimeStep = " << data->fDataTimeStep << endl;
|
||||
|
||||
// check if 'use_fit_range' plotting is whished
|
||||
if (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fUseFitRanges) {
|
||||
|
@ -755,6 +755,12 @@ bool PRunAsymmetry::PrepareFitData(PRawRunData* runData, unsigned int histoNo[2]
|
||||
*/
|
||||
bool PRunAsymmetry::PrepareViewData(PRawRunData* runData, unsigned int histoNo[2])
|
||||
{
|
||||
// check if view_packing is wished
|
||||
int packing = fRunInfo->fPacking;
|
||||
if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) {
|
||||
packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking;
|
||||
}
|
||||
|
||||
// feed the parameter vector
|
||||
std::vector<double> par;
|
||||
PMsrParamList *paramList = fMsrInfo->GetMsrParamList();
|
||||
@ -764,10 +770,10 @@ bool PRunAsymmetry::PrepareViewData(PRawRunData* runData, unsigned int histoNo[2
|
||||
// transform raw histo data. This is done the following way (for details see the manual):
|
||||
// first rebin the data, than calculate the asymmetry
|
||||
// first get start data, end data, and t0
|
||||
int val = fRunInfo->fDataRange[0]-fRunInfo->fPacking*(fRunInfo->fDataRange[0]/fRunInfo->fPacking);
|
||||
int val = fRunInfo->fDataRange[0]-packing*(fRunInfo->fDataRange[0]/packing);
|
||||
do {
|
||||
if (fRunInfo->fDataRange[2] - fRunInfo->fDataRange[0] < 0)
|
||||
val += fRunInfo->fPacking;
|
||||
val += packing;
|
||||
} while (val + fRunInfo->fDataRange[2] - fRunInfo->fDataRange[0] < 0);
|
||||
|
||||
int start[2] = {val, val + fRunInfo->fDataRange[2] - fRunInfo->fDataRange[0]};
|
||||
@ -781,12 +787,12 @@ cout << endl;
|
||||
*/
|
||||
|
||||
// make sure that there are equal number of rebinned bins in forward and backward
|
||||
unsigned int noOfBins0 = (runData->fDataBin[histoNo[0]].size()-start[0])/fRunInfo->fPacking;
|
||||
unsigned int noOfBins1 = (runData->fDataBin[histoNo[1]].size()-start[1])/fRunInfo->fPacking;
|
||||
unsigned int noOfBins0 = (runData->fDataBin[histoNo[0]].size()-start[0])/packing;
|
||||
unsigned int noOfBins1 = (runData->fDataBin[histoNo[1]].size()-start[1])/packing;
|
||||
if (noOfBins0 > noOfBins1)
|
||||
noOfBins0 = noOfBins1;
|
||||
end[0] = start[0] + noOfBins0 * fRunInfo->fPacking;
|
||||
end[1] = start[1] + noOfBins0 * fRunInfo->fPacking;
|
||||
end[0] = start[0] + noOfBins0 * packing;
|
||||
end[1] = start[1] + noOfBins0 * packing;
|
||||
|
||||
// check if start, end, and t0 make any sense
|
||||
// 1st check if start and end are in proper order
|
||||
@ -820,19 +826,19 @@ cout << endl;
|
||||
double error = 0.0;
|
||||
// forward
|
||||
for (int i=start[0]; i<end[0]; i++) {
|
||||
if (fRunInfo->fPacking == 1) {
|
||||
if (packing == 1) {
|
||||
forwardPacked.fValue.push_back(fForward[i]);
|
||||
forwardPacked.fError.push_back(fForwardErr[i]);
|
||||
} else { // packed data, i.e. fRunInfo->fPacking > 1
|
||||
if (((i-start[0]) % fRunInfo->fPacking == 0) && (i != start[0])) { // fill data
|
||||
} else { // packed data, i.e. packing > 1
|
||||
if (((i-start[0]) % packing == 0) && (i != start[0])) { // fill data
|
||||
// in order that after rebinning the fit does not need to be redone (important for plots)
|
||||
// the value is normalize to per bin
|
||||
value /= fRunInfo->fPacking;
|
||||
value /= packing;
|
||||
forwardPacked.fValue.push_back(value);
|
||||
if (value == 0.0)
|
||||
forwardPacked.fError.push_back(1.0);
|
||||
else
|
||||
forwardPacked.fError.push_back(TMath::Sqrt(error)/fRunInfo->fPacking);
|
||||
forwardPacked.fError.push_back(TMath::Sqrt(error)/packing);
|
||||
value = 0.0;
|
||||
error = 0.0;
|
||||
}
|
||||
@ -842,19 +848,19 @@ cout << endl;
|
||||
}
|
||||
// backward
|
||||
for (int i=start[1]; i<end[1]; i++) {
|
||||
if (fRunInfo->fPacking == 1) {
|
||||
if (packing == 1) {
|
||||
backwardPacked.fValue.push_back(fBackward[i]);
|
||||
backwardPacked.fError.push_back(fBackwardErr[i]);
|
||||
} else { // packed data, i.e. fRunInfo->fPacking > 1
|
||||
if (((i-start[1]) % fRunInfo->fPacking == 0) && (i != start[1])) { // fill data
|
||||
} else { // packed data, i.e. packing > 1
|
||||
if (((i-start[1]) % packing == 0) && (i != start[1])) { // fill data
|
||||
// in order that after rebinning the fit does not need to be redone (important for plots)
|
||||
// the value is normalize to per bin
|
||||
value /= fRunInfo->fPacking;
|
||||
value /= packing;
|
||||
backwardPacked.fValue.push_back(value);
|
||||
if (value == 0.0)
|
||||
backwardPacked.fError.push_back(1.0);
|
||||
else
|
||||
backwardPacked.fError.push_back(TMath::Sqrt(error)/fRunInfo->fPacking);
|
||||
backwardPacked.fError.push_back(TMath::Sqrt(error)/packing);
|
||||
value = 0.0;
|
||||
error = 0.0;
|
||||
}
|
||||
@ -875,8 +881,8 @@ cout << endl;
|
||||
double f, b, ef, eb, alpha = 1.0, beta = 1.0;
|
||||
// fill data time start, and step
|
||||
// data start at data_start-t0
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start[0]-t0[0]+(double)(fRunInfo->fPacking-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*(double)fRunInfo->fPacking;
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start[0]-t0[0]+(double)(packing-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*(double)packing;
|
||||
|
||||
/*
|
||||
cout << endl << ">> start time = " << fData.fDataTimeStart << ", step = " << fData.fDataTimeStep;
|
||||
|
@ -553,11 +553,17 @@ bool PRunSingleHisto::PrepareFitData(PRawRunData* runData, const unsigned int hi
|
||||
*/
|
||||
bool PRunSingleHisto::PrepareRawViewData(PRawRunData* runData, const unsigned int histoNo)
|
||||
{
|
||||
// check if view_packing is wished
|
||||
int packing = fRunInfo->fPacking;
|
||||
if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) {
|
||||
packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking;
|
||||
}
|
||||
|
||||
// raw data, since PMusrCanvas is doing ranging etc.
|
||||
// start = the first bin which is a multiple of packing backward from first good data bin
|
||||
int start = fRunInfo->fDataRange[0] - (fRunInfo->fDataRange[0]/fRunInfo->fPacking)*fRunInfo->fPacking;
|
||||
int start = fRunInfo->fDataRange[0] - (fRunInfo->fDataRange[0]/packing)*packing;
|
||||
// end = last bin starting from start which is a multipl of packing and still within the data
|
||||
int end = start + ((runData->fDataBin[histoNo].size()-start)/fRunInfo->fPacking)*fRunInfo->fPacking;
|
||||
int end = start + ((runData->fDataBin[histoNo].size()-start)/packing)*packing;
|
||||
// check if start, end, and t0 make any sense
|
||||
// 1st check if start and end are in proper order
|
||||
if (end < start) { // need to swap them
|
||||
@ -581,21 +587,21 @@ bool PRunSingleHisto::PrepareRawViewData(PRawRunData* runData, const unsigned in
|
||||
double value = 0.0;
|
||||
// data start at data_start-t0
|
||||
// time shifted so that packing is included correctly, i.e. t0 == t0 after packing
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start-(double)t0+(double)(fRunInfo->fPacking-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*fRunInfo->fPacking;
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start-(double)t0+(double)(packing-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*packing;
|
||||
|
||||
/*
|
||||
cout << endl << ">> time resolution = " << fTimeResolution;
|
||||
cout << endl << ">> start = " << start << ", t0 = " << t0 << ", packing = " << fRunInfo->fPacking;
|
||||
cout << endl << ">> start = " << start << ", t0 = " << t0 << ", packing = " << packing;
|
||||
cout << endl << ">> data start time = " << fData.fDataTimeStart;
|
||||
*/
|
||||
|
||||
double normalizer = 1.0;
|
||||
for (int i=start; i<end; i++) {
|
||||
if (((i-start) % fRunInfo->fPacking == 0) && (i != start)) { // fill data
|
||||
if (((i-start) % packing == 0) && (i != start)) { // fill data
|
||||
// in order that after rebinning the fit does not need to be redone (important for plots)
|
||||
// the value is normalize to per 1 nsec
|
||||
normalizer = fRunInfo->fPacking * (fTimeResolution * 1e3); // fTimeResolution us->ns
|
||||
normalizer = packing * (fTimeResolution * 1e3); // fTimeResolution us->ns
|
||||
value /= normalizer;
|
||||
fData.fValue.push_back(value);
|
||||
if (value == 0.0)
|
||||
@ -705,15 +711,21 @@ cout << endl << ">> data start time = " << fData.fDataTimeStart;
|
||||
*/
|
||||
bool PRunSingleHisto::PrepareViewData(PRawRunData* runData, const unsigned int histoNo)
|
||||
{
|
||||
// check if view_packing is wished
|
||||
int packing = fRunInfo->fPacking;
|
||||
if (fMsrInfo->GetMsrPlotList()->at(0).fViewPacking > 0) {
|
||||
packing = fMsrInfo->GetMsrPlotList()->at(0).fViewPacking;
|
||||
}
|
||||
|
||||
// transform raw histo data. This is done the following way (for details see the manual):
|
||||
// for the single histo fit, just the rebinned raw data are copied
|
||||
// first get start data, end data, and t0
|
||||
int t0 = fT0s[0];
|
||||
|
||||
// start = the first bin which is a multiple of packing backward from first good data bin
|
||||
int start = fRunInfo->fDataRange[0] - (fRunInfo->fDataRange[0]/fRunInfo->fPacking)*fRunInfo->fPacking;
|
||||
int start = fRunInfo->fDataRange[0] - (fRunInfo->fDataRange[0]/packing)*packing;
|
||||
// end = last bin starting from start which is a multiple of packing and still within the data
|
||||
int end = start + ((runData->fDataBin[histoNo].size()-start)/fRunInfo->fPacking)*fRunInfo->fPacking;
|
||||
int end = start + ((runData->fDataBin[histoNo].size()-start)/packing)*packing;
|
||||
|
||||
// check if start, end, and t0 make any sense
|
||||
// 1st check if start and end are in proper order
|
||||
@ -780,8 +792,8 @@ bool PRunSingleHisto::PrepareViewData(PRawRunData* runData, const unsigned int h
|
||||
double time;
|
||||
|
||||
// data start at data_start-t0 shifted by (pack-1)/2
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start-(double)t0+(double)(fRunInfo->fPacking-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*fRunInfo->fPacking;
|
||||
fData.fDataTimeStart = fTimeResolution*((double)start-(double)t0+(double)(packing-1)/2.0);
|
||||
fData.fDataTimeStep = fTimeResolution*packing;
|
||||
|
||||
/*
|
||||
cout << endl << ">> start time = " << fData.fDataTimeStart << ", step = " << fData.fDataTimeStep;
|
||||
@ -791,17 +803,17 @@ cout << endl << "--------------------------------" << endl;
|
||||
|
||||
double normalizer = 1.0;
|
||||
for (int i=start; i<end; i++) {
|
||||
if (((i-start) % fRunInfo->fPacking == 0) && (i != start)) { // fill data
|
||||
if (((i-start) % packing == 0) && (i != start)) { // fill data
|
||||
// in order that after rebinning the fit does not need to be redone (important for plots)
|
||||
// the value is normalize to per 1 nsec
|
||||
normalizer = fRunInfo->fPacking * (fTimeResolution * 1.0e3); // fTimeResolution us->ns
|
||||
normalizer = packing * (fTimeResolution * 1.0e3); // fTimeResolution us->ns
|
||||
value /= normalizer;
|
||||
time = (((double)i-(double)(fRunInfo->fPacking-1)/2.0)-t0)*fTimeResolution;
|
||||
time = (((double)i-(double)(packing-1)/2.0)-t0)*fTimeResolution;
|
||||
expval = TMath::Exp(+time/tau)/N0;
|
||||
fData.fValue.push_back(-1.0+expval*(value-bkg));
|
||||
//cout << endl << ">> i=" << i << ",t0=" << t0 << ",time=" << time << ",expval=" << expval << ",value=" << value << ",bkg=" << bkg << ",expval*(value-bkg)-1=" << expval*(value-bkg)-1.0;
|
||||
fData.fError.push_back(expval*TMath::Sqrt(value/normalizer));
|
||||
//cout << endl << ">> " << time << ", " << expval << ", " << -1.0+expval*(value-bkg) << ", " << expval*TMath::Sqrt(value/fRunInfo->fPacking);
|
||||
//cout << endl << ">> " << time << ", " << expval << ", " << -1.0+expval*(value-bkg) << ", " << expval*TMath::Sqrt(value/packing);
|
||||
value = 0.0;
|
||||
}
|
||||
value += runData->fDataBin[histoNo][i];
|
||||
|
Reference in New Issue
Block a user