LCOV - code coverage report
Current view: top level - STEER/ESD - AliESDZDC.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 127 248 51.2 %
Date: 2016-06-14 17:26:59 Functions: 8 13 61.5 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : 
      17             : //-------------------------------------------------------------------------
      18             : //                      Implementation of   Class AliESDZDC
      19             : //   This is a class that summarizes the ZDC data
      20             : //   for the ESD   
      21             : //   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
      22             : //-------------------------------------------------------------------------
      23             : 
      24             : #include <TMath.h>
      25             : 
      26             : #include "AliESDZDC.h"
      27             : 
      28         172 : ClassImp(AliESDZDC)
      29             : 
      30             : //______________________________________________________________________________
      31             : AliESDZDC::AliESDZDC() :
      32          20 :   AliVZDC(),
      33          20 :   fZDCN1Energy(0),
      34          20 :   fZDCP1Energy(0),
      35          20 :   fZDCN2Energy(0),
      36          20 :   fZDCP2Energy(0),
      37          20 :   fZDCEMEnergy(0),
      38          20 :   fZDCEMEnergy1(0),
      39          20 :   fZDCParticipants(0),
      40          20 :   fZDCPartSideA(0),
      41          20 :   fZDCPartSideC(0),
      42          20 :   fImpactParameter(0),
      43          20 :   fImpactParamSideA(0),
      44          20 :   fImpactParamSideC(0),
      45          20 :   fESDQuality(0),
      46          20 :   fZNCTDChit(kFALSE),
      47          20 :   fZNATDChit(kFALSE),
      48          20 :   fZPCTDChit(kFALSE),
      49          20 :   fZPATDChit(kFALSE),
      50          20 :   fZEM1TDChit(kFALSE),
      51          20 :   fZEM2TDChit(kFALSE)
      52             : 
      53         100 : {
      54         240 :   for(Int_t i=0; i<5; i++){
      55         100 :     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
      56         100 :     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
      57         100 :     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
      58         100 :     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
      59             :   }
      60         120 :   for(Int_t i=0; i<2; i++){
      61          40 :     fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
      62             :   }
      63        1320 :   for(Int_t i=0; i<32; i++){
      64         640 :     fVMEScaler[i]=0;
      65        6400 :     for(Int_t y=0; y<4; y++){
      66        2560 :       fZDCTDCData[i][y]=0;
      67        2560 :       fZDCTDCCorrected[i][y]=0.;
      68             :     }
      69             :   }
      70         320 :   for(int it=0; it<7; it++) fZDCTDCChannels[it]=-1;
      71          40 : }
      72             : 
      73             : //______________________________________________________________________________
      74             : AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
      75           0 :   AliVZDC(zdc),
      76           0 :   fZDCN1Energy(zdc.fZDCN1Energy),
      77           0 :   fZDCP1Energy(zdc.fZDCP1Energy),
      78           0 :   fZDCN2Energy(zdc.fZDCN2Energy),
      79           0 :   fZDCP2Energy(zdc.fZDCP2Energy),
      80           0 :   fZDCEMEnergy(zdc.fZDCEMEnergy),
      81           0 :   fZDCEMEnergy1(zdc.fZDCEMEnergy1),
      82           0 :   fZDCParticipants(zdc.fZDCParticipants),
      83           0 :   fZDCPartSideA(zdc.fZDCPartSideA),
      84           0 :   fZDCPartSideC(zdc.fZDCPartSideC),
      85           0 :   fImpactParameter(zdc.fImpactParameter),
      86           0 :   fImpactParamSideA(zdc.fImpactParamSideA),
      87           0 :   fImpactParamSideC(zdc.fImpactParamSideC),
      88           0 :   fESDQuality(zdc.fESDQuality),
      89           0 :   fZNCTDChit(zdc.fZNCTDChit),
      90           0 :   fZNATDChit(zdc.fZNATDChit),
      91           0 :   fZPCTDChit(zdc.fZPCTDChit),
      92           0 :   fZPATDChit(zdc.fZPATDChit),
      93           0 :   fZEM1TDChit(zdc.fZEM1TDChit),
      94           0 :   fZEM2TDChit(zdc.fZEM2TDChit)
      95             : 
      96           0 : {
      97             :   // copy constructor
      98           0 :   for(Int_t i=0; i<5; i++){
      99           0 :      fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
     100           0 :      fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
     101           0 :      fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
     102           0 :      fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
     103           0 :      fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
     104           0 :      fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
     105           0 :      fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
     106           0 :      fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
     107             :   }
     108           0 :   for(Int_t i=0; i<2; i++){
     109           0 :     fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
     110           0 :     fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
     111             :   }
     112           0 :   for(Int_t i=0; i<32; i++){
     113           0 :     fVMEScaler[i] = zdc.fVMEScaler[i];
     114           0 :     for(Int_t y=0; y<4; y++){
     115           0 :        fZDCTDCData[i][y] = zdc.fZDCTDCData[i][y];
     116           0 :        fZDCTDCCorrected[i][y] = zdc.fZDCTDCCorrected[i][y];
     117             :     }
     118             :   }
     119           0 :   for(int it=0; it<7; it++) fZDCTDCChannels[it]=zdc.fZDCTDCChannels[it];
     120           0 : }
     121             : 
     122             : //______________________________________________________________________________
     123             : AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
     124             : {
     125             :   // assigment operator
     126          20 :   if(this!=&zdc) {
     127          10 :     AliVZDC::operator=(zdc);
     128          10 :     fZDCN1Energy = zdc.fZDCN1Energy;
     129          10 :     fZDCP1Energy = zdc.fZDCP1Energy;
     130          10 :     fZDCN2Energy = zdc.fZDCN2Energy;
     131          10 :     fZDCP2Energy = zdc.fZDCP2Energy;
     132          10 :     fZDCEMEnergy = zdc.fZDCEMEnergy;
     133          10 :     fZDCEMEnergy1 = zdc.fZDCEMEnergy1;
     134         120 :     for(Int_t i=0; i<5; i++){
     135          50 :        fZN1TowerEnergy[i] = zdc.fZN1TowerEnergy[i];
     136          50 :        fZN2TowerEnergy[i] = zdc.fZN2TowerEnergy[i];
     137          50 :        fZP1TowerEnergy[i] = zdc.fZP1TowerEnergy[i];
     138          50 :        fZP2TowerEnergy[i] = zdc.fZP2TowerEnergy[i];
     139          50 :        fZN1TowerEnergyLR[i] = zdc.fZN1TowerEnergyLR[i];
     140          50 :        fZN2TowerEnergyLR[i] = zdc.fZN2TowerEnergyLR[i];
     141          50 :        fZP1TowerEnergyLR[i] = zdc.fZP1TowerEnergyLR[i];
     142          50 :        fZP2TowerEnergyLR[i] = zdc.fZP2TowerEnergyLR[i];
     143             :     }
     144             :     //
     145          10 :     fZDCParticipants = zdc.fZDCParticipants;
     146          10 :     fZDCPartSideA = zdc.fZDCPartSideA;
     147          10 :     fZDCPartSideC = zdc.fZDCPartSideC;
     148          10 :     fImpactParameter = zdc.fImpactParameter;
     149          10 :     fImpactParamSideA = zdc.fImpactParamSideA;
     150          10 :     fImpactParamSideC = zdc.fImpactParamSideC;
     151             :     //
     152          60 :     for(Int_t i=0; i<2; i++){
     153          20 :          fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
     154          20 :          fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
     155             :     }
     156             :     //
     157          10 :     fESDQuality = zdc.fESDQuality;
     158         660 :     for(Int_t i=0; i<32; i++){
     159         320 :       fVMEScaler[i] = zdc.fVMEScaler[i];
     160        3200 :       for(Int_t y=0; y<4; y++){ 
     161        1280 :          fZDCTDCData[i][y] = zdc.fZDCTDCData[i][y];
     162        1280 :          fZDCTDCCorrected[i][y] = zdc.fZDCTDCCorrected[i][y];
     163             :       }
     164             :     }
     165          10 :   } 
     166          10 :   fZNCTDChit = zdc.fZNCTDChit;
     167          10 :   fZNATDChit = zdc.fZNATDChit;
     168          10 :   fZPCTDChit = zdc.fZPCTDChit;
     169          10 :   fZPATDChit = zdc.fZPATDChit;
     170          10 :   fZEM1TDChit = zdc.fZEM1TDChit;
     171          10 :   fZEM2TDChit = zdc.fZEM2TDChit;
     172             :   
     173         160 :   for(int it=0; it<7; it++) fZDCTDCChannels[it]=zdc.fZDCTDCChannels[it];
     174             :  
     175          10 :   return *this;
     176             : }
     177             : 
     178             : //______________________________________________________________________________
     179             : void AliESDZDC::Copy(TObject &obj) const {
     180             :   
     181             :   // this overwrites the virtual TOBject::Copy()
     182             :   // to allow run time copying without casting
     183             :   // in AliESDEvent
     184             : 
     185           4 :   if(this==&obj)return;
     186           6 :   AliESDZDC *robj = dynamic_cast<AliESDZDC*>(&obj);
     187           2 :   if(!robj)return; // not an AliESDZDC
     188           2 :   *robj = *this;
     189             : 
     190           4 : }
     191             : 
     192             : 
     193             : //______________________________________________________________________________
     194             : void AliESDZDC::Reset()
     195             : {
     196             :   // reset all data members
     197          66 :   fZDCN1Energy=0;
     198          33 :   fZDCP1Energy=0;
     199          33 :   fZDCN2Energy=0;
     200          33 :   fZDCP2Energy=0;
     201          33 :   fZDCEMEnergy=0;
     202          33 :   fZDCEMEnergy1=0;
     203         396 :   for(Int_t i=0; i<5; i++){
     204         165 :     fZN1TowerEnergy[i] = fZN2TowerEnergy[i] = 0.;
     205         165 :     fZP1TowerEnergy[i] = fZP2TowerEnergy[i] = 0.;
     206         165 :     fZN1TowerEnergyLR[i] = fZN2TowerEnergyLR[i] = 0.;
     207         165 :     fZP1TowerEnergyLR[i] = fZP2TowerEnergyLR[i] = 0.;
     208             :   }
     209          33 :   fZDCParticipants=0;  
     210          33 :   fZDCPartSideA=0;  
     211          33 :   fZDCPartSideC=0;  
     212          33 :   fImpactParameter=0;
     213          33 :   fImpactParamSideA=0;
     214          33 :   fImpactParamSideC=0;
     215         198 :   for(Int_t i=0; i<2; i++){
     216          66 :        fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
     217             :   }
     218          33 :   fESDQuality=0;
     219        2178 :   for(Int_t i=0; i<32; i++){
     220        1056 :      fVMEScaler[i] = 0;
     221       10560 :      for(Int_t y=0; y<4; y++){
     222        4224 :         fZDCTDCData[i][y] = 0;
     223        4224 :         fZDCTDCCorrected[i][y] = 0.;
     224             :      }
     225             :   }
     226          33 :   fZNCTDChit = kFALSE;
     227          33 :   fZNATDChit = kFALSE;
     228          33 :   fZPCTDChit = kFALSE;
     229          33 :   fZPATDChit = kFALSE;
     230          33 :   fZEM1TDChit = kFALSE;
     231          33 :   fZEM2TDChit = kFALSE;
     232             : 
     233         528 :   for(int it=0; it<7; it++) fZDCTDCChannels[it]=-1;
     234             : 
     235          33 : }
     236             : 
     237             : //______________________________________________________________________________
     238             : void AliESDZDC::Print(const Option_t *) const
     239             : {
     240             :   //  Print ESD for the ZDC
     241           0 :   printf(" ### ZDC energies: \n");
     242           0 :   printf("\n \t E_ZNC = %1.2f (%1.2f+%1.2f+%1.2f+%1.2f+%1.2f) GeV \n \t E_ZNA = %1.2f (%1.2f+%1.2f+%1.2f+%1.2f+%1.2f) GeV\n"
     243             :   " \t E_ZPC = %1.2f GeV E_ZPA = %1.2f GeV"
     244             :   "\n E_ZEM1 = %1.2f GeV,   E_ZEM2 = %1.2f GeV\n \n",
     245           0 :   fZDCN1Energy, fZN1TowerEnergy[0], fZN1TowerEnergy[1], fZN1TowerEnergy[2], fZN1TowerEnergy[3], fZN1TowerEnergy[4], 
     246           0 :   fZDCN2Energy, fZN2TowerEnergy[0], fZN2TowerEnergy[1], fZN2TowerEnergy[2], fZN2TowerEnergy[3], fZN2TowerEnergy[4], 
     247           0 :   fZDCP1Energy,fZDCP2Energy, fZDCEMEnergy, fZDCEMEnergy1);
     248             :   //
     249             :   /*printf(" ### VMEScaler (!=0): \n");
     250             :   for(Int_t i=0; i<32; i++) if(fVMEScaler[i]!=0) printf("\t %d \n",fVMEScaler[i]);
     251             :   printf("\n");*/
     252             :   //
     253           0 :   if(TestBit(AliESDZDC::kTDCcablingSet)) printf(" ### TDC channels: ZNA %d  ZPA %d  ZEM1 %d  ZEM2 %d  ZNC %d  ZPC%d  L0 %d\n\n",
     254           0 :   fZDCTDCChannels[0],fZDCTDCChannels[1],fZDCTDCChannels[2],fZDCTDCChannels[3],fZDCTDCChannels[4],fZDCTDCChannels[5],fZDCTDCChannels[6]);
     255             :   /*for(Int_t i=0; i<32; i++){
     256             :     for(Int_t j=0; j<4; j++)
     257             :       if(TMath::Abs(fZDCTDCCorrected[i][j])>1e-4) printf("\t %1.0f \n",fZDCTDCCorrected[i][j]);
     258             :   }*/
     259           0 :   printf("\n");
     260           0 : }
     261             : 
     262             : //______________________________________________________________________________
     263             : Bool_t AliESDZDC::GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2]) 
     264             : {
     265             :   // Provide coordinates of centroid over ZN (side C) front face
     266           0 :   if(beamEne==0){
     267           0 :     printf(" ZDC centroid in PbPb can't be calculated with E_beam = 0 !!!\n");
     268           0 :     for(Int_t jj=0; jj<2; jj++) fZNCCentrCoord[jj] = 999.;
     269           0 :     return kFALSE;
     270             :   }
     271             : 
     272             :   const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
     273             :   const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
     274             :   const Float_t alpha=0.395;
     275             :   Float_t numXZNC=0., numYZNC=0., denZNC=0., cZNC, wZNC; 
     276             :   Float_t numXZNA=0., numYZNA=0., denZNA=0., cZNA, wZNA; 
     277             :   //
     278           0 :   for(Int_t i=0; i<4; i++){
     279           0 :     if(fZN1TowerEnergy[i+1]>0.) {
     280           0 :       wZNC = TMath::Power(fZN1TowerEnergy[i+1], alpha);
     281           0 :       numXZNC += x[i]*wZNC;
     282           0 :       numYZNC += y[i]*wZNC;
     283           0 :       denZNC += wZNC;
     284           0 :     }
     285           0 :     if(fZN2TowerEnergy[i+1]>0.) {
     286           0 :       wZNA = TMath::Power(fZN2TowerEnergy[i+1], alpha);
     287           0 :       numXZNA += x[i]*wZNA;
     288           0 :       numYZNA += y[i]*wZNA;
     289           0 :       denZNA += wZNA;
     290           0 :     }
     291             :   }
     292             :   //
     293           0 :   if(denZNC!=0){
     294           0 :     Float_t nSpecnC = fZDCN1Energy/beamEne;
     295           0 :     cZNC = 1.89358-0.71262/(nSpecnC+0.71789);
     296           0 :     fZNCCentrCoord[0] = cZNC*numXZNC/denZNC;
     297           0 :     fZNCCentrCoord[1] = cZNC*numYZNC/denZNC;
     298           0 :   } 
     299             :   else{
     300           0 :     fZNCCentrCoord[0] = fZNCCentrCoord[1] = 999.;
     301             :   }
     302           0 :   if(denZNA!=0){
     303           0 :     Float_t nSpecnA = fZDCN2Energy/beamEne;
     304           0 :     cZNA = 1.89358-0.71262/(nSpecnA+0.71789);
     305           0 :     fZNACentrCoord[0] = cZNA*numXZNA/denZNA;
     306           0 :     fZNACentrCoord[1] = cZNA*numYZNA/denZNA;
     307           0 :   } 
     308             :   else{
     309           0 :     fZNACentrCoord[0] = fZNACentrCoord[1] = 999.;
     310             :   }
     311             :   //
     312           0 :   for(Int_t il=0; il<2; il++){
     313           0 :     centrZNC[il] = fZNCCentrCoord[il];
     314           0 :     centrZNA[il] = fZNACentrCoord[il];
     315             :   }
     316             :   
     317             :   return kTRUE;
     318           0 : }
     319             : 
     320             : //______________________________________________________________________________
     321             : Bool_t AliESDZDC::GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2]) 
     322             : {
     323             :   // Provide coordinates of centroid over ZN (side C) front face
     324             :   const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75};
     325             :   const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75};
     326             :   const Float_t alpha=0.5;
     327             :   Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC; 
     328             :   Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA; 
     329             :   //
     330           0 :   for(Int_t i=0; i<4; i++){
     331           0 :     if(fZN1TowerEnergy[i+1]>0.) {
     332           0 :       wZNC = TMath::Power(fZN1TowerEnergy[i+1], alpha);
     333           0 :       numXZNC += x[i]*wZNC;
     334           0 :       numYZNC += y[i]*wZNC;
     335           0 :       denZNC += wZNC;
     336           0 :     }
     337           0 :     if(fZN2TowerEnergy[i+1]>0.) {
     338           0 :       wZNA = TMath::Power(fZN2TowerEnergy[i+1], alpha);
     339           0 :       numXZNA += x[i]*wZNA;
     340           0 :       numYZNA += y[i]*wZNA;
     341           0 :       denZNA += wZNA;
     342           0 :     }
     343             :   }
     344             :   //
     345           0 :   if(denZNC!=0){
     346           0 :     fZNCCentrCoord[0] = numXZNC/denZNC;
     347           0 :     fZNCCentrCoord[1] = numYZNC/denZNC;
     348           0 :   } 
     349             :   else{
     350           0 :     fZNCCentrCoord[0] = fZNCCentrCoord[1] = 999.;
     351             :   }
     352           0 :   if(denZNA!=0){
     353           0 :     fZNACentrCoord[0] = numXZNA/denZNA;
     354           0 :     fZNACentrCoord[1] = numYZNA/denZNA;
     355           0 :   } 
     356             :   else{
     357           0 :     fZNACentrCoord[0] = fZNACentrCoord[1] = 999.;
     358             :   }
     359             :   //
     360           0 :   for(Int_t il=0; il<2; il++){
     361           0 :     centrZNC[il] = fZNCCentrCoord[il];
     362           0 :     centrZNA[il] = fZNACentrCoord[il];
     363             :   }
     364             :   
     365           0 :   return kTRUE;
     366             : }
     367             : 
     368             : //______________________________________________________________________________
     369             : Float_t AliESDZDC::GetZNTDCSum(Int_t ihit) const
     370             : {
     371          16 :     if(ihit>4 || !(AliESDZDC::kCorrectedTDCFilled)){
     372           0 :       return 1000.; // only up to 4 hits are stored && return sum only for calibrated TDCs
     373             :     }
     374             :     else{
     375           8 :       if(!(TestBit(AliESDZDC::kTDCcablingSet))){ // RUN1: data cabled ch. hardwired in the code
     376           0 :          if((fZDCTDCData[10][ihit]!=0) && (fZDCTDCData[12][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[10][ihit]+fZDCTDCCorrected[12][ihit]);
     377           0 :          else return 999.;
     378             :       }
     379             :       else{ // RUN2: everything done from mapping
     380           8 :          if(fZDCTDCChannels[4]<0 ||  fZDCTDCChannels[2]<0){// RUN2 data but without signal code!!! 
     381           8 :            if((fZDCTDCData[16][ihit]!=0) && (fZDCTDCData[18][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[16][ihit]+fZDCTDCCorrected[18][ihit]);
     382           8 :            else return 998.;
     383             :          }
     384             :          else{
     385           0 :            if((fZDCTDCData[fZDCTDCChannels[4]][ihit]!=0) && (fZDCTDCData[fZDCTDCChannels[2]][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[fZDCTDCChannels[4]][ihit]+fZDCTDCCorrected[fZDCTDCChannels[2]][ihit]);
     386           0 :            else return 997.;
     387             :          }
     388             :       }
     389             :    }
     390           8 : }
     391             : 
     392             : //______________________________________________________________________________
     393             : Float_t AliESDZDC::GetZNTDCDiff(Int_t ihit) const
     394             : {
     395          16 :     if(ihit>4 || !(AliESDZDC::kCorrectedTDCFilled)){
     396           0 :       return 1000.; // only up to 4 hits are stored && return sum only for calibrated TDCs
     397             :     }
     398             :     else{
     399           8 :       if(!(TestBit(AliESDZDC::kTDCcablingSet))){ // RUN1: data cabled ch. hardwired in the code
     400           0 :          if((fZDCTDCData[10][ihit]!=0) && (fZDCTDCData[12][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[10][ihit]-fZDCTDCCorrected[12][ihit]);
     401           0 :          else return 999.;
     402             :       }
     403             :       else{ // RUN2: everything done from mapping
     404           8 :          if(fZDCTDCChannels[4]<0 ||  fZDCTDCChannels[2]<0){// RUN2 data but without signal code!!! 
     405           8 :            if((fZDCTDCData[16][ihit]!=0) && (fZDCTDCData[18][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[16][ihit]-fZDCTDCCorrected[18][ihit]);
     406           8 :            else return 998.;
     407             :          }
     408             :          else{
     409           0 :            if((fZDCTDCData[fZDCTDCChannels[4]][ihit]!=0) && (fZDCTDCData[fZDCTDCChannels[2]][ihit]!=0)) return (Float_t) (fZDCTDCCorrected[fZDCTDCChannels[2]][ihit]-fZDCTDCCorrected[fZDCTDCChannels[4]][ihit]);
     410           0 :            else return 997.;
     411             :          }
     412             :       }
     413             :    }
     414           8 : }

Generated by: LCOV version 1.11