fixed time range issue in single histo fit which was caused by a musrfit <-> DKS confusion. Asymmetry fit still has an issue which needs further investigations.

This commit is contained in:
2019-09-21 19:29:51 +02:00
parent 9a955de4d6
commit afef9600b4

View File

@ -105,7 +105,6 @@ Double_t PFitterFcnDKS::operator()(const std::vector<Double_t>& par) const
ierr += fDKS.callLaunchChiSquare(FITTYPE_SINGLE_HISTO, fMemDataSingleHisto[i], fMemDataSingleHistoErr[i], dksp.fNoOfFitBins, ierr += fDKS.callLaunchChiSquare(FITTYPE_SINGLE_HISTO, fMemDataSingleHisto[i], fMemDataSingleHistoErr[i], dksp.fNoOfFitBins,
par.size(), dksp.fFun.size(), dksp.fMap.size(), par.size(), dksp.fFun.size(), dksp.fMap.size(),
dksp.fStartTime , dksp.fPackedTimeResolution, chisq); dksp.fStartTime , dksp.fPackedTimeResolution, chisq);
value += chisq; value += chisq;
if (ierr != 0) { if (ierr != 0) {
@ -252,6 +251,7 @@ void PFitterFcnDKS::InitDKS(const UInt_t dksTag)
{ {
Int_t ierr = 0; Int_t ierr = 0;
Int_t fitType = FITTYPE_UNDEFINED; Int_t fitType = FITTYPE_UNDEFINED;
Int_t startTimeBin = -1, endTimeBin = -1, length = -1;
// if any device was allocated before, free the device resources // if any device was allocated before, free the device resources
FreeDKS(); FreeDKS();
@ -339,22 +339,34 @@ void PFitterFcnDKS::InitDKS(const UInt_t dksTag)
fValid = false; fValid = false;
return; return;
} }
size = runData->GetValue()->size(); startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_SINGLE_HISTO, i);
fMemDataSingleHisto[i] = fDKS.allocateMemory<Double_t>(size, ierr); endTimeBin = fRunListCollection->GetEndTimeBin(MSR_FITTYPE_SINGLE_HISTO, i);
fMemDataSingleHistoErr[i] = fDKS.allocateMemory<Double_t>(size, ierr); length = endTimeBin-startTimeBin;
if (ierr != 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated single histo data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_SINGLE_HISTO, i);
if (startTimeBin < 0) { if (startTimeBin < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (single histo fit)." << std::endl; std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (single histo fit)." << std::endl;
fValid = false; fValid = false;
return; return;
} }
fDKS.writeData<double>(fMemDataSingleHisto[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin); if (endTimeBin < 0) {
fDKS.writeData<double>(fMemDataSingleHistoErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin); std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** endTimeBin undefind (single histo fit)." << std::endl;
fValid = false;
return;
}
if (length < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed for single histo data set (i=" << i << ") from fRunListCollection." << std::endl;
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** (endTimeBin=" << endTimeBin << ") < (startTimeBin=" << startTimeBin << ")." << std::endl;
fValid = false;
return;
}
fMemDataSingleHisto[i] = fDKS.allocateMemory<Double_t>(length, ierr);
fMemDataSingleHistoErr[i] = fDKS.allocateMemory<Double_t>(length, ierr);
if (ierr != 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated single histo data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
fDKS.writeData<double>(fMemDataSingleHisto[i], &runData->GetValue()->at(startTimeBin), length);
fDKS.writeData<double>(fMemDataSingleHistoErr[i], &runData->GetError()->at(startTimeBin), length);
} }
if (fRunListCollection->GetNoOfSingleHisto() > 0) if (fRunListCollection->GetNoOfSingleHisto() > 0)
fitType = FITTYPE_SINGLE_HISTO; fitType = FITTYPE_SINGLE_HISTO;
@ -369,22 +381,35 @@ void PFitterFcnDKS::InitDKS(const UInt_t dksTag)
fValid = false; fValid = false;
return; return;
} }
size = runData->GetValue()->size(); startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_ASYM, i); //as35
fMemDataAsymmetry[i] = fDKS.allocateMemory<Double_t>(size, ierr); endTimeBin = fRunListCollection->GetEndTimeBin(MSR_FITTYPE_ASYM, i); //as35
fMemDataAsymmetryErr[i] = fDKS.allocateMemory<Double_t>(size, ierr); length = endTimeBin-startTimeBin;
if (ierr != 0) { std::cout << "debug> length=" << length << std::endl; //as35
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated asymmetry data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_ASYM, i);
if (startTimeBin < 0) { if (startTimeBin < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (asymmetry fit)." << std::endl; std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (asymmetry fit)." << std::endl;
fValid = false; fValid = false;
return; return;
} }
fDKS.writeData<double>(fMemDataAsymmetry[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin); if (endTimeBin < 0) {
fDKS.writeData<double>(fMemDataAsymmetryErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin); std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** endTimeBin undefind (asymmetry fit)." << std::endl;
fValid = false;
return;
}
if (length < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed for asymmetry data set (i=" << i << ") from fRunListCollection." << std::endl;
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** (endTimeBin=" << endTimeBin << ") < (startTimeBin=" << startTimeBin << ")." << std::endl;
fValid = false;
return;
}
fMemDataAsymmetry[i] = fDKS.allocateMemory<Double_t>(length, ierr);
fMemDataAsymmetryErr[i] = fDKS.allocateMemory<Double_t>(length, ierr);
if (ierr != 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated asymmetry data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
fDKS.writeData<double>(fMemDataAsymmetry[i], &runData->GetValue()->at(startTimeBin), length);
fDKS.writeData<double>(fMemDataAsymmetryErr[i], &runData->GetError()->at(startTimeBin), length);
} }
if (fRunListCollection->GetNoOfAsymmetry() > 0) { if (fRunListCollection->GetNoOfAsymmetry() > 0) {
if (fitType == FITTYPE_UNDEFINED) { if (fitType == FITTYPE_UNDEFINED) {
@ -406,22 +431,34 @@ void PFitterFcnDKS::InitDKS(const UInt_t dksTag)
fValid = false; fValid = false;
return; return;
} }
size = runData->GetValue()->size(); startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_MU_MINUS, i);
fMemDataMuMinus[i] = fDKS.allocateMemory<Double_t>(size, ierr); endTimeBin = fRunListCollection->GetEndTimeBin(MSR_FITTYPE_MU_MINUS, i);
fMemDataMuMinusErr[i] = fDKS.allocateMemory<Double_t>(size, ierr); length = endTimeBin-startTimeBin;
if (ierr != 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated mu minus data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_MU_MINUS, i);
if (startTimeBin < 0) { if (startTimeBin < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (mu minus fit)." << std::endl; std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (mu minus fit)." << std::endl;
fValid = false; fValid = false;
return; return;
} }
fDKS.writeData<double>(fMemDataMuMinus[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin); if (endTimeBin < 0) {
fDKS.writeData<double>(fMemDataMuMinusErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin); std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** endTimeBin undefind (mu minus fit)." << std::endl;
fValid = false;
return;
}
if (length < 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed for mu minus data set (i=" << i << ") from fRunListCollection." << std::endl;
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** (endTimeBin=" << endTimeBin << ") < (startTimeBin=" << startTimeBin << ")." << std::endl;
fValid = false;
return;
}
fMemDataMuMinus[i] = fDKS.allocateMemory<Double_t>(length, ierr);
fMemDataMuMinusErr[i] = fDKS.allocateMemory<Double_t>(length, ierr);
if (ierr != 0) {
std::cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated mu minus data set memory (i=" << i << ") on the GPU" << std::endl;
fValid = false;
return;
}
fDKS.writeData<double>(fMemDataMuMinus[i], &runData->GetValue()->at(startTimeBin), length);
fDKS.writeData<double>(fMemDataMuMinusErr[i], &runData->GetError()->at(startTimeBin), length);
} }
if (fRunListCollection->GetNoOfMuMinus() > 0) { if (fRunListCollection->GetNoOfMuMinus() > 0) {
if (fitType == FITTYPE_UNDEFINED) { if (fitType == FITTYPE_UNDEFINED) {