lift #forward == #backward restriction.

This commit is contained in:
suter_a 2021-06-16 17:58:40 +02:00
parent b2bb863e9d
commit ab29dedb77
2 changed files with 37 additions and 24 deletions

View File

@ -602,16 +602,6 @@ Bool_t PRunAsymmetry::PrepareData()
return false; return false;
} }
} }
if (forwardHistoNo.size() != backwardHistoNo.size()) {
std::cerr << std::endl << ">> PRunAsymmetry::PrepareData(): **PANIC ERROR**:";
std::cerr << std::endl << ">> # of forward histograms different from # of backward histograms.";
std::cerr << std::endl << ">> Will quit :-(";
std::cerr << std::endl;
// clean up
forwardHistoNo.clear();
backwardHistoNo.clear();
return false;
}
// keep the time resolution in (us) // keep the time resolution in (us)
fTimeResolution = runData->GetTimeResolution()/1.0e3; fTimeResolution = runData->GetTimeResolution()/1.0e3;
@ -626,11 +616,13 @@ Bool_t PRunAsymmetry::PrepareData()
// keep the histo of each group at this point (addruns handled below) // keep the histo of each group at this point (addruns handled below)
std::vector<PDoubleVector> forward, backward; std::vector<PDoubleVector> forward, backward;
forward.resize(forwardHistoNo.size()); // resize to number of groups forward.resize(forwardHistoNo.size()); // resize to number of groups
backward.resize(backwardHistoNo.size()); // resize to numer of groups
for (UInt_t i=0; i<forwardHistoNo.size(); i++) { for (UInt_t i=0; i<forwardHistoNo.size(); i++) {
forward[i].resize(runData->GetDataBin(forwardHistoNo[i])->size()); forward[i].resize(runData->GetDataBin(forwardHistoNo[i])->size());
backward[i].resize(runData->GetDataBin(backwardHistoNo[i])->size());
forward[i] = *runData->GetDataBin(forwardHistoNo[i]); forward[i] = *runData->GetDataBin(forwardHistoNo[i]);
}
backward.resize(backwardHistoNo.size()); // resize to number of groups
for (UInt_t i=0; i<backwardHistoNo.size(); i++) {
backward[i].resize(runData->GetDataBin(backwardHistoNo[i])->size());
backward[i] = *runData->GetDataBin(backwardHistoNo[i]); backward[i] = *runData->GetDataBin(backwardHistoNo[i]);
} }
@ -676,9 +668,11 @@ Bool_t PRunAsymmetry::PrepareData()
// set forward/backward histo data of the first group // set forward/backward histo data of the first group
fForward.resize(forward[0].size()); fForward.resize(forward[0].size());
fBackward.resize(backward[0].size());
for (UInt_t i=0; i<fForward.size(); i++) { for (UInt_t i=0; i<fForward.size(); i++) {
fForward[i] = forward[0][i]; fForward[i] = forward[0][i];
}
fBackward.resize(backward[0].size());
for (UInt_t i=0; i<fBackward.size(); i++) {
fBackward[i] = backward[0][i]; fBackward[i] = backward[0][i];
} }
@ -1677,7 +1671,7 @@ Bool_t PRunAsymmetry::PrepareRRFViewData(PRawRunData* runData, UInt_t histoNo[2]
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
/** /**
* <p>Get the proper t0 for the single histogram run. * <p>Get the proper t0 for the single histogram run.
* -# the t0 vector size = number of detectors (grouping) for forward. * -# the t0 vector size = number of detectors (grouping) for forward + backward.
* -# initialize t0's with -1 * -# initialize t0's with -1
* -# fill t0's from RUN block * -# fill t0's from RUN block
* -# if t0's are missing (i.e. t0 == -1), try to fill from the GLOBAL block. * -# if t0's are missing (i.e. t0 == -1), try to fill from the GLOBAL block.
@ -1698,7 +1692,11 @@ Bool_t PRunAsymmetry::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalB
// feed all T0's // feed all T0's
// first init T0's, T0's are stored as (forward T0, backward T0, etc.) // first init T0's, T0's are stored as (forward T0, backward T0, etc.)
fT0s.clear(); fT0s.clear();
fT0s.resize(2*forwardHistoNo.size()); // this strange fT0 size estimate is needed in case #forw histos != #back histos
size_t size = 2*forwardHistoNo.size();
if (backwardHistoNo.size() > forwardHistoNo.size())
size = 2*backwardHistoNo.size();
fT0s.resize(size);
for (UInt_t i=0; i<fT0s.size(); i++) { for (UInt_t i=0; i<fT0s.size(); i++) {
fT0s[i] = -1.0; fT0s[i] = -1.0;
} }
@ -1765,6 +1763,8 @@ Bool_t PRunAsymmetry::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *globalB
std::cerr << std::endl; std::cerr << std::endl;
return false; return false;
} }
}
for (UInt_t i=0; i<backwardHistoNo.size(); i++) {
if ((fT0s[2*i+1] < 0) || (fT0s[2*i+1] > static_cast<Int_t>(runData->GetDataBin(backwardHistoNo[i])->size()))) { if ((fT0s[2*i+1] < 0) || (fT0s[2*i+1] > static_cast<Int_t>(runData->GetDataBin(backwardHistoNo[i])->size()))) {
std::cerr << std::endl << ">> PRunAsymmetry::PrepareData(): **ERROR** t0 data bin (" << fT0s[2*i+1] << ") doesn't make any sense!"; std::cerr << std::endl << ">> PRunAsymmetry::PrepareData(): **ERROR** t0 data bin (" << fT0s[2*i+1] << ") doesn't make any sense!";
std::cerr << std::endl << ">> backwardHistoNo " << backwardHistoNo[i]; std::cerr << std::endl << ">> backwardHistoNo " << backwardHistoNo[i];

View File

@ -640,6 +640,7 @@ Bool_t PRunAsymmetryBNMR::PrepareData()
return false; return false;
} }
} }
/* //as35
if (forwardHistoNo.size() != backwardHistoNo.size()) { if (forwardHistoNo.size() != backwardHistoNo.size()) {
std::cerr << std::endl << ">> PRunAsymmetryBNMR::PrepareData(): **PANIC ERROR**:"; std::cerr << std::endl << ">> PRunAsymmetryBNMR::PrepareData(): **PANIC ERROR**:";
std::cerr << std::endl << ">> # of forward histograms different from # of backward histograms."; std::cerr << std::endl << ">> # of forward histograms different from # of backward histograms.";
@ -650,6 +651,7 @@ Bool_t PRunAsymmetryBNMR::PrepareData()
backwardHistoNo.clear(); backwardHistoNo.clear();
return false; return false;
} }
*/ //as35
// keep the time resolution in (s) // keep the time resolution in (s)
fTimeResolution = runData->GetTimeResolution()/1.0e3; fTimeResolution = runData->GetTimeResolution()/1.0e3;
@ -664,11 +666,13 @@ Bool_t PRunAsymmetryBNMR::PrepareData()
// keep the histo of each group at this point (addruns handled below) // keep the histo of each group at this point (addruns handled below)
std::vector<PDoubleVector> forward, backward; std::vector<PDoubleVector> forward, backward;
forward.resize(forwardHistoNo.size()); // resize to number of groups forward.resize(forwardHistoNo.size()); // resize to number of groups
backward.resize(backwardHistoNo.size()); // resize to numer of groups
for (UInt_t i=0; i<forwardHistoNo.size(); i++) { for (UInt_t i=0; i<forwardHistoNo.size(); i++) {
forward[i].resize(runData->GetDataBin(forwardHistoNo[i])->size()); forward[i].resize(runData->GetDataBin(forwardHistoNo[i])->size());
backward[i].resize(runData->GetDataBin(backwardHistoNo[i])->size());
forward[i] = *runData->GetDataBin(forwardHistoNo[i]); forward[i] = *runData->GetDataBin(forwardHistoNo[i]);
}
backward.resize(backwardHistoNo.size()); // resize to number of groups
for (UInt_t i=0; i<backwardHistoNo.size(); i++) {
backward[i].resize(runData->GetDataBin(backwardHistoNo[i])->size());
backward[i] = *runData->GetDataBin(backwardHistoNo[i]); backward[i] = *runData->GetDataBin(backwardHistoNo[i]);
} }
@ -712,15 +716,18 @@ Bool_t PRunAsymmetryBNMR::PrepareData()
} }
} }
// set forward/backward histo data of the first group // set forward histo data of the first group
fForwardp.resize(forward[0].size()); fForwardp.resize(forward[0].size());
fBackwardp.resize(backward[0].size());
fForwardm.resize(forward[0].size()); fForwardm.resize(forward[0].size());
fBackwardm.resize(backward[0].size());
for (UInt_t i=0; i<fForwardp.size(); i++) { for (UInt_t i=0; i<fForwardp.size(); i++) {
fForwardp[i] = forward[0][i]; fForwardp[i] = forward[0][i];
fBackwardp[i] = backward[0][i];
fForwardm[i] = forward[1][i]; fForwardm[i] = forward[1][i];
}
// set backward histo data of the first group
fBackwardp.resize(backward[0].size());
fBackwardm.resize(backward[0].size());
for (UInt_t i=0; i<fBackwardp.size(); i++) {
fBackwardp[i] = backward[0][i];
fBackwardm[i] = backward[1][i]; fBackwardm[i] = backward[1][i];
} }
@ -1529,7 +1536,11 @@ Bool_t PRunAsymmetryBNMR::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *glo
// feed all T0's // feed all T0's
// first init T0's, T0's are stored as (forward T0, backward T0, etc.) // first init T0's, T0's are stored as (forward T0, backward T0, etc.)
fT0s.clear(); fT0s.clear();
fT0s.resize(2*forwardHistoNo.size()); // this strange fT0 size estimate is needed in case #forw histos != #back histos
size_t size = 2*forwardHistoNo.size();
if (backwardHistoNo.size() > forwardHistoNo.size())
size = 2*backwardHistoNo.size();
fT0s.resize(size);
for (UInt_t i=0; i<fT0s.size(); i++) { for (UInt_t i=0; i<fT0s.size(); i++) {
fT0s[i] = -1.0; fT0s[i] = -1.0;
} }
@ -1596,6 +1607,8 @@ Bool_t PRunAsymmetryBNMR::GetProperT0(PRawRunData* runData, PMsrGlobalBlock *glo
std::cerr << std::endl; std::cerr << std::endl;
return false; return false;
} }
}
for (UInt_t i=0; i<backwardHistoNo.size(); i++) {
if ((fT0s[2*i+1] < 0) || (fT0s[2*i+1] > static_cast<Int_t>(runData->GetDataBin(backwardHistoNo[i])->size()))) { if ((fT0s[2*i+1] < 0) || (fT0s[2*i+1] > static_cast<Int_t>(runData->GetDataBin(backwardHistoNo[i])->size()))) {
std::cerr << std::endl << ">> PRunAsymmetryBNMR::PrepareData(): **ERROR** t0 data bin (" << fT0s[2*i+1] << ") doesn't make any sense!"; std::cerr << std::endl << ">> PRunAsymmetryBNMR::PrepareData(): **ERROR** t0 data bin (" << fT0s[2*i+1] << ") doesn't make any sense!";
std::cerr << std::endl << ">> backwardHistoNo " << backwardHistoNo[i]; std::cerr << std::endl << ">> backwardHistoNo " << backwardHistoNo[i];