- } else {
- iLook=iLook-1;
- }
- effLow=fEffLow[iLook][iPt];
- effHigh=fEffHigh[iLook][iPt];
-#ifdef MYTRIGDEBUG
- printf("6: charge, iSim, iTheta, iPhi, iPt: %f %d %d %d %d effLow: %f, effHigh: %f\n",
- charge,iSim,iTheta,iPhi,iPt,effLow,effHigh);
-#endif
-
- //fEffLow [iPhi][iTheta][iPt];
- //fEffHigh[iPhi][iTheta][iPt];
+
+ if(fInt==1) {
+ Float_t angl,angh,anga;
+ Float_t effLowp,effHighp,effAnyp;
+ Float_t ptc=(iPt+0.5)*fDpt; // The center of current bin
+ #ifdef MYTRIGDEBUG
+ printf(" 5:1 The center of current bin iPt: %d is: %f\n",iPt,ptc);
+ #endif
+ if(iPt==fnptb) {
+ #ifdef MYTRIGDEBUG
+ printf(" 6:1 No more points above! No interpolation is needed!\n");
+ #endif
+ return;
+ }else if(ptc==pt){
+ #ifdef MYTRIGDEBUG
+ printf(" 6:1 No interpolation is needed!\n");
+ #endif
+ return;
+ }else if(ptc>pt){
+ // Looking for previous point
+ if(iPt>1) {
+ effLowp =fhEffLPt->GetBinContent(iTheta,iPhi,iPt-1);
+ effHighp=fhEffHPt->GetBinContent(iTheta,iPhi,iPt-1);
+ effAnyp =fhEffAPt->GetBinContent(iTheta,iPhi,iPt-1);
+ #ifdef MYTRIGDEBUG
+ printf(" 7:1 A simple look to previous point: %d: %f %f\n",iPt-1,effLowp,effHighp);
+ #endif
+ } else {
+ effLowp=0.;
+ effHighp=0.;
+ effAnyp=0;
+ #ifdef MYTRIGDEBUG
+ printf(" 8:1 result is: %f %f %f\n",effLowp,effHighp,effAnyp);
+ #endif
+ }
+ angl=(effLow-effLowp)/fDpt;
+ angh=(effHigh-effHighp)/fDpt;
+ anga=(effAny-effAnyp)/fDpt;
+ }else{
+ // Looking for next point
+ if(iPt<fnptb) {
+ effLowp =fhEffLPt->GetBinContent(iTheta,iPhi,iPt+1);
+ effHighp=fhEffHPt->GetBinContent(iTheta,iPhi,iPt+1);
+ effAnyp =fhEffAPt->GetBinContent(iTheta,iPhi,iPt+1);
+ #ifdef MYTRIGDEBUG
+ printf(" 7:1 A simple look to next point: %d: %f %f %f\n",iPt-1,effLowp,effHighp,effAnyp);
+ #endif
+ } else {
+ effLowp=effLow;
+ effHighp=effHigh;
+ effAnyp=effAny;
+ #ifdef MYTRIGDEBUG
+ printf(" 8:1 result is: pt: %f %f %f\n",effLowp,effHighp,effAnyp);
+ #endif
+ }
+ angl=(effLowp-effLow)/fDpt;
+ angh=(effHighp-effHigh)/fDpt;
+ anga=(effAnyp-effAny)/fDpt;
+ }
+ effLow=effLow+angl*(pt-ptc);
+ effHigh=effHigh+angh*(pt-ptc);
+ effAny=effAny+anga*(pt-ptc);
+ #ifdef MYTRIGDEBUG
+ printf(" 9:1 the interpolation coefficients are: %f %f %f\n",angl,angh,anga);
+ #endif
+ }
+ #ifdef MYTRIGDEBUG
+ printf("10:%1d effLow, effHigh=%f %f %f\n",fInt,effLow,effHigh,effAny);
+ #endif
+ return;