16 JCalibration * jcalib = dapp->GetJCalibration(loop->GetJEvent().GetRunNumber());
17 vector<map<string,double> >vals;
18 if (jcalib->Get(
"CDC/ElectrondEdxMean",vals)==
false){
19 map<string,double> &row = vals[0];
25 if (jcalib->Get(
"CDC/dEdxMean",vals)==
false){
26 for(
unsigned int i=0; i<vals.size(); i++){
27 map<string,double> &row = vals[i];
28 switch(
int(row[
"PID"])){
52 if (jcalib->Get(
"CDC/ElectrondEdxSigma",vals)==
false){
53 map<string,double> &row = vals[0];
59 if (jcalib->Get(
"CDC/dEdxSigma",vals)==
false){
60 for(
unsigned int i=0; i<vals.size(); i++){
61 map<string,double> &row = vals[i];
62 switch(
int(row[
"PID"])){
87 if (jcalib->Get(
"FDC/ElectrondEdxMean",vals)==
false){
88 map<string,double> &row = vals[0];
94 if (jcalib->Get(
"FDC/dEdxMean",vals)==
false){
95 for(
unsigned int i=0; i<vals.size(); i++){
96 map<string,double> &row = vals[i];
97 switch(
int(row[
"PID"])){
121 if (jcalib->Get(
"FDC/ElectrondEdxSigma",vals)==
false){
122 map<string,double> &row = vals[0];
128 if (jcalib->Get(
"FDC/dEdxSigma",vals)==
false){
129 for(
unsigned int i=0; i<vals.size(); i++){
130 map<string,double> &row = vals[i];
131 switch(
int(row[
"PID"])){
155 if (jcalib->Get(
"START_COUNTER/dEdxProtonMean",vals)==
false){
156 map<string,double> &row = vals[0];
162 if (jcalib->Get(
"START_COUNTER/dEdxProtonSigma",vals)==
false){
163 map<string,double> &row = vals[0];
170 if (jcalib->Get(
"TOF/TimeSigmas",vals)==
false){
171 for(
unsigned int i=0; i<vals.size(); i++){
172 map<string,double> &row = vals[i];
173 switch(
int(row[
"PID"])){
204 if (jcalib->Get(
"BCAL/TimeSigmas",vals)==
false){
205 for(
unsigned int i=0; i<vals.size(); i++){
206 map<string,double> &row = vals[i];
207 switch(
int(row[
"PID"])){
238 if (jcalib->Get(
"BCAL/EOverPSigma",vals)==
false){
239 map<string,double> &row = vals[0];
244 if (jcalib->Get(
"BCAL/EOverPMean",vals)==
false){
245 map<string,double> &row = vals[0];
252 if (jcalib->Get(
"FCAL/EOverPSigma",vals)==
false){
253 map<string,double> &row = vals[0];
258 if (jcalib->Get(
"FCAL/EOverPMean",vals)==
false){
259 map<string,double> &row = vals[0];
265 if (jcalib->Get(
"FCAL/TimeSigmas",vals)==
false){
266 for(
unsigned int i=0; i<vals.size(); i++){
267 map<string,double> &row = vals[i];
268 switch(
int(row[
"PID"])){
346 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
350 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
356 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
365 if((locPIDHypothesis ==
KPlus) || (locPIDHypothesis ==
KMinus)){
369 if((locPIDHypothesis ==
PiPlus) || (locPIDHypothesis ==
PiMinus)){
374 return RESOURCE_UNAVAILABLE;
379 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
388 if((locPIDHypothesis ==
KPlus) || (locPIDHypothesis ==
KMinus)){
392 if((locPIDHypothesis ==
PiPlus) || (locPIDHypothesis ==
PiMinus)){
397 return RESOURCE_UNAVAILABLE;
402 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
411 if((locPIDHypothesis ==
KPlus) || (locPIDHypothesis ==
KMinus)){
415 if((locPIDHypothesis ==
PiPlus) || (locPIDHypothesis ==
PiMinus)){
420 return RESOURCE_UNAVAILABLE;;
425 double locBetaGammaValue = locBeta/
sqrt(1.0 - locBeta*locBeta);
434 if((locPIDHypothesis ==
KPlus) || (locPIDHypothesis ==
KMinus)){
438 if((locPIDHypothesis ==
PiPlus) || (locPIDHypothesis ==
PiMinus)){
443 return RESOURCE_UNAVAILABLE;
449 unsigned int locMinimumNumberUsedHitsForConfidence = 3;
452 unsigned int locNDF=0;
456 unsigned int locNumHitsUsedFordEdx_FDC = locTrackTimeBased->dNumHitsUsedFordEdx_FDC;
458 bool locUseCDCHitsFlag = (locNumHitsUsedFordEdx_CDC >= locMinimumNumberUsedHitsForConfidence) ?
true :
false;
459 bool locUseFDCHitsFlag = (locNumHitsUsedFordEdx_FDC >= locMinimumNumberUsedHitsForConfidence) ?
true :
false;
461 if((locUseCDCHitsFlag ==
false) && (locUseFDCHitsFlag ==
false))
462 return RESOURCE_UNAVAILABLE;
465 double locDCdEdx_FDC=locTrackTimeBased->ddEdx_FDC;
466 double locDCdEdx_CDC=locTrackTimeBased->ddEdx_CDC_amp;
468 double locMeandEdx_FDC, locMeandEdx_CDC, locSigmadEdx_FDC, locSigmadEdx_CDC;
469 double locDeltadEdx_CDC = 0.0, locDeltadEdx_FDC = 0.0;
471 double locBeta = locChargedTrackHypothesis->
momentum().Mag()/locChargedTrackHypothesis->
energy();
473 if(locUseCDCHitsFlag &&
GetdEdxMean_CDC(locBeta, locNumHitsUsedFordEdx_CDC, locMeandEdx_CDC, locPID) == NOERROR)
475 if(
GetdEdxSigma_CDC(locBeta, locNumHitsUsedFordEdx_CDC, locSigmadEdx_CDC, locPID) == NOERROR)
477 locDeltadEdx_CDC = locDCdEdx_CDC - locMeandEdx_CDC;
478 double locNormalizedDifference = locDeltadEdx_CDC/locSigmadEdx_CDC;
479 locChiSq += locNormalizedDifference*locNormalizedDifference;
484 if(locUseFDCHitsFlag &&
GetdEdxMean_FDC(locBeta, locNumHitsUsedFordEdx_FDC, locMeandEdx_FDC, locPID) == NOERROR)
486 if(
GetdEdxSigma_FDC(locBeta, locNumHitsUsedFordEdx_FDC, locSigmadEdx_FDC, locPID) == NOERROR)
488 locDeltadEdx_FDC = locDCdEdx_FDC - locMeandEdx_FDC;
489 double locNormalizedDifference = locDeltadEdx_FDC/locSigmadEdx_FDC;
490 locChiSq += locNormalizedDifference*locNormalizedDifference;
601 return locSigma*locSigma;
vector< float > ddEdxSigmaParams_FDC_PiPlus
vector< float > ddEdxMeanParams_FDC_PiPlus
vector< float > dTimeSigmaParams_TOF_KPlus
vector< float > ddEdxMeanParams_CDC_Electron
vector< float > ddEdxSigmaParams_CDC_KPlus
vector< float > ddEdxSigmaParams_FDC_KPlus
double energy(void) const
jerror_t CalcDCdEdxChiSq(DChargedTrackHypothesis *locChargedTrackHypothesis) const
double GetProtondEdxMean_SC(double locBeta) const
const DTrackTimeBased * Get_TrackTimeBased(void) const
vector< float > ddEdxMeanParams_CDC_Proton
double GetProtondEdxSigma_SC(double locBeta) const
vector< float > dEOverPMeanParams_FCAL
vector< float > ddEdxMeanParams_CDC_PiPlus
vector< float > ddEdxSigmaParams_CDC_PiPlus
vector< float > ddEdxMeanParams_CDC_KPlus
void Set_ChiSq_DCdEdx(double locChiSq, unsigned int locNDF)
vector< float > dTimeSigmaParams_FCAL_PiPlus
jerror_t GetdEdxMean_FDC(double locBeta, unsigned int locNumHitsUsedFordEdx, double &locMeandEdx, Particle_t locPIDHypothesis) const
vector< float > ddEdxSigmaParams_FDC_Electron
double Function_dEdxSigma(double locBetaGamma, const vector< float > &locParams) const
vector< float > dTimeSigmaParams_TOF_Positron
vector< float > dTimeSigmaParams_BCAL_KPlus
vector< float > ddEdxMeanParams_SC_Proton
double GetEOverPSigma(DetectorSystem_t detector, double p) const
vector< float > ddEdxSigmaParams_CDC_Electron
vector< float > dEOverPMeanParams_BCAL
vector< float > dTimeSigmaParams_FCAL_Positron
double Function_dEdx(double locBetaGamma, const vector< float > &locParams) const
vector< float > ddEdxMeanParams_FDC_Proton
vector< float > ddEdxSigmaParams_FDC_Proton
vector< float > dTimeSigmaParams_BCAL_Proton
vector< float > dTimeSigmaParams_BCAL_PiPlus
vector< float > ddEdxMeanParams_FDC_Electron
vector< float > ddEdxMeanParams_FDC_KPlus
double GetEOverPMean(DetectorSystem_t detector, double p) const
vector< float > ddEdxSigmaParams_SC_Proton
const DVector3 & momentum(void) const
vector< float > dTimeSigmaParams_FCAL_KPlus
vector< float > dTimeSigmaParams_TOF_PiPlus
jerror_t GetdEdxSigma_FDC(double locBeta, unsigned int locNumHitsUsedFordEdx, double &locSigmadEdx, Particle_t locPIDHypothesis) const
vector< float > dTimeSigmaParams_FCAL_Proton
vector< float > dEOverPSigmaParams_FCAL
jerror_t GetdEdxSigma_CDC(double locBeta, unsigned int locNumHitsUsedFordEdx, double &locSigmadEdx, Particle_t locPIDHypothesis) const
vector< float > ddEdxSigmaParams_CDC_Proton
vector< float > dTimeSigmaParams_BCAL_Positron
vector< float > dEOverPSigmaParams_BCAL
vector< float > dTimeSigmaParams_TOF_Proton
jerror_t GetdEdxMean_CDC(double locBeta, unsigned int locNumHitsUsedFordEdx, double &locMeandEdx, Particle_t locPIDHypothesis) const
unsigned int dNumHitsUsedFordEdx_CDC
Particle_t PID(void) const
double GetTimeVariance(DetectorSystem_t detector, Particle_t particle, double p) const