ROOT logo
//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
//
// HShowerHitDigitizer
//
// This class digitizes  Pre-Shower wires. The value of the charge and
// its position
// on the sense wire are calculated. Due to do it there are needed geometry
// and digitisation parameters.
// These data are stored in HShowerGeantWire category.
//
// The Shower digitization is split into several tasks as shown
//  in the flow diagram below.
//
//   ----------------------
//  |     HShowerUnpacker  |                                                                              //
//  |   (embedding mode)   | \                                                                            //
//  |                      |  \      ------------------                                                   //
//   ----------------------   |     |  HGeantShower    |                                                  //
//                            |      ------------------\                                                  //
//                            |                         \                                                 //
//                            |      ------------------  \------------->  ----------------------          //
//                            |     |  HGeantWire      |   <------------ |  HShowerHitDigitizer |         //
//                            |      ------------------\                  ----------------------          //
//                            |                         \                                                 //
//                 -------------     ------------------  \------------->  -----------------------         //
//             -- | HShowerRaw  |   |  HShowerRawMatr  |   <------------ |  HShowerPadDigitizer  |        //
//            |    -------------     ------------------\                 |( creates track objects|        //
//            |                                         \                |  for real tracks in   |        //
//   ----------------------          ------------------  \               |  embedding mode too)  |        //
//  |   HShowerCalibrater  |        |  HShowerTrack    |  \<------------  -----------------------         //
//  |   (embedding mode)   |         ------------------\   \                                              //
//   ----------------------                             \   \             -----------------------         //
//            |                      ------------------  \   ----------> |   HShowerCopy         |        //
//             -------------------> |  HShowerCal      |  \<------------ |(add charge of real hit|        //
//                                   ------------------\   \             | in embedding too )    |        //
//                                                      \   \             -----------------------         //
//                                   ------------------  ----\--------->  -----------------------         //
//                                  |  HShowerHitHdr   |   <--\--------- |  HShowerHitFinder     |        //
//                                   ------------------        \          -----------------------         //
//                                   ------------------         \        |                                //
//                                  |  HShowerPID      |   <-----\-------|                                //
//                                   ------------------           \      |                                //
//                                   ------------------            \     |                                //
//                                  |  HShowerHit      |   <--------\----|                                //
//                                   ------------------ <            \                                    //
//                                                       \            \                                   //
//                                                        \-------------> ------------------------        //
//                                                                       | HShowerHitTrackMatcher |       //
//                                                                        ------------------------        //
//
//
//  In the case of TRACK EMBEDDING of simulated tracks into
//  experimental data the real data are written by the HShowerUnpacker into
//  HShowerRaw category. The real hits are taken into
//  account by the digitizer (adding of charges, sorting by first hit in
//  photo multiplier). The embedding mode is recognized
//  automatically by analyzing the
//  gHades->getEmbeddingMode() flag.
//            Mode ==0 means no embedding
//                 ==1 realistic embedding (first real or sim hit makes the game)
//                 ==2 keep GEANT tracks   (as 1, but GEANT track numbers will always
//                     win against real data. besides the tracknumber the output will
//                     be the same as in 1)
//
///////////////////////////////////////////////////////////////////////////
#include "hshowerhitdigitizer.h"

#include "hruntimedb.h"
#include "hevent.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hshowerdetector.h"
#include "hcategory.h"
#include "hmatrixcategory.h"
#include "hlinearcategory.h"
#include "hlocation.h"
#include "hgeantshower.h"
#include "hshowergeantwire.h"
#include "hshowerdigipar.h"
#include "hshowergeometry.h"
#include "hdebug.h"
#include "hades.h"
#include "showerdef.h"
#include <math.h>
#include <stdlib.h>
#include "TRandom.h"

//*-- Author : Leszek Kidon & Jacek Otwinowski
//*-- Modified: 01/06/2000 L.Kidon
//*-- Modified: 22/04/2000 J.Otwinowski
//*-- Modified : 26/8/99 R. Holzmann
//*-- Modified : July 99 Leszek Kidon
//*-- Modified : 04-09/07/2001 M.Jaskula:
//*--            - Gauss->Landau charge distribution
//*--            - New weights for distributsion on the wires
//*-- Modified : 02/08/2001 M.Jaskula:
//*--            - New parameters
//*--            - Efficiency (beta)
//*-- Modified : 03/10/2006 J. Otwinowski

ClassImp(HShowerHitDigitizer)

//------------------------------------------------------------------------------

HShowerHitDigitizer::HShowerHitDigitizer(const Text_t *name,const Text_t *title,
                            Float_t unit) : HShowerDigitizer(name,title)
{
    piconst = 2 * acos(0.);
    fUnit = unit;  // HGeant length unit (1. for cm, 10. for mm)
}

HShowerHitDigitizer::HShowerHitDigitizer()
{
    piconst = 2*acos(0.);
    fUnit = 10.;
}

HShowerHitDigitizer::~HShowerHitDigitizer(void)
{
}

Bool_t HShowerHitDigitizer::init() {
// creates GeantShower(input) and ShowerGeantWire(output) categories
// and adds them to the current event

    printf("initialization of shower hit digitizer \n");

HCategory *pCat;
HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()
                                           ->getDetector("Shower");

    pCat=gHades->getCurrentEvent()->getCategory(catShowerGeantRaw);
    if( ! pCat)
    {
        pCat=pShowerDet->buildCategory(catShowerGeantRaw);

        if( ! pCat)
            return kFALSE;
        else
            gHades->getCurrentEvent()
                         ->addCategory(catShowerGeantRaw, pCat, "Simul");
    }

    setInCat(pCat);

    pCat=gHades->getCurrentEvent()->getCategory(catShowerGeantWire);
    if( ! pCat)
    {
        pCat=pShowerDet->buildCategory(catShowerGeantWire);

        if( ! pCat)
            return kFALSE;
        else
            gHades->getCurrentEvent()
                         ->addCategory(catShowerGeantWire, pCat, "Shower");
    }

    setOutCat(pCat);

    return HShowerDigitizer::init();
}

HShowerHitDigitizer& HShowerHitDigitizer::operator=(HShowerHitDigitizer &c)
{
// It should have been done
    return c;
}

Bool_t HShowerHitDigitizer::digitize(TObject *pHit)
{
  Bool_t nResult = kFALSE;

#if DEBUG_LEVEL>2
    gDebuger->enterFunc("HShowerHitDigitizer::execute");
    gDebuger->message("category points to %p", pHit);
#endif

//    printf("In digitize(): %p\n", pHit);
  HGeantShower *pGeantHit = (HGeantShower*)pHit;
    if (pGeantHit)
    {
//        printf("sec: %d mod: %d\n", pGeantHit->getSector(), pGeantHit->getModule());
        nResult = digiHits(pGeantHit);
    }

#if DEBUG_LEVEL>2
    gDebuger->leaveFunc("HShowerHitDigitizer::execute");
#endif

    return nResult;
}

Bool_t HShowerHitDigitizer::digiHits(HGeantShower *simhit)
{
HLocation         fLoc;
HShowerGeantWire *pGeantWire = NULL;
Float_t             x_exit, y_exit;
Int_t             nDet, nSector;// nRow, nCol;
Int_t             nFiredWire, nFiredWireIn, nFiredWireOut;
Float_t           fE, fTheta, fPhi, fBeta;
Float_t           fX, fY;
Float_t           fNewX, fNewY;
Float_t           fQ, fThick;
Float_t           fTan;
Int_t             i;
Float_t           fY0, fY1;

    nDet = simhit->getModule();
    nSector = simhit->getSector();
    simhit->getHit(fE, fX, fY, fBeta);
    simhit->getIncidence(fTheta, fPhi);

    fX /= fUnit;   // go from mm to cm again  (HGeant 5.0 gives mm!)
    fY /= fUnit;

// --------------  Emulation of old code  -----------------------------------
//    if( nDet==0 && ! pDigiPar->checkEfficiency(0,0,0,0,fBeta)) return kFALSE;

// --------------  New code  ------------------------------------------------
    Int_t nCol, nRow;
    HShowerPad *pPad = pGeometry->getPadParam(nDet)->getPad(fX,fY);
    if (pPad==0) return kFALSE;
    pPad->getPadPos(&nRow,&nCol);
    if(!pDigiPar->checkEfficiency(nSector,nDet,nRow,nCol,fBeta)) return kFALSE;

        // degree to radian conv.
    fTheta = (TMath::Pi()/180.0) * fTheta;
    fPhi   = (TMath::Pi()/180.0) * fPhi;

    HShowerWireTab *phWires = pGeometry->getWireTab(nDet);

    fThick        = pDigiPar->getThickDet();

    fTan = tan(fTheta);
    x_exit = fX + fThick* fTan * cos(fPhi);
    y_exit = fY + fThick* fTan * sin(fPhi);

    nFiredWireIn = phWires->lookupWire(fY);
    if(nFiredWireIn == -1) {
      //      cout<<"no nFiredWireIn for "<<nDet<<" " <<fY<<endl;
      return kFALSE;
    }

    nFiredWireOut = phWires->lookupWire(y_exit);
    if(nFiredWireOut == -1) {
      //      cout<<"no nFiredWireOut for "<<nDet<<" " <<y_exit<<endl;
      return kFALSE;
    }

    if(nFiredWireIn > nFiredWireOut) {   // swap
        i = nFiredWireIn;
        nFiredWireIn  = nFiredWireOut;
        nFiredWireOut = i;
    }

    for(nFiredWire = nFiredWireIn; nFiredWire <= nFiredWireOut; nFiredWire++)
    {
        fNewY = phWires->getWirePos(nFiredWire);

        if(nFiredWireOut == nFiredWireIn)
        {
                // track inside one cell
            fNewX = 0.5 * (fX + x_exit); // average (IN + OUT)
        }
        else
        {
                // find out Y track's corrd. inside the cell
            if(nFiredWire == nFiredWireIn)
                fY0 = fY;
            else
            {
                    // average of two sense wires (a field wire position)
                fY0 = 0.5 * (phWires->getWirePos(nFiredWire - 1) + fNewY);
            }

            if(nFiredWire == nFiredWireOut)
                fY1 = y_exit;
            else
            {
                fY1 = 0.5 * (fNewY
                            + phWires->getWirePos(nFiredWire + 1));
            }

                // X corrd. depends on the average X value inside the cell
            fNewX = fX + 0.5 * (x_exit - fX) * (fY1 + fY0 - 2 * fY)
                            / (y_exit - fY);
        }
//        fQ = pDigiPar->getCharge(0, 0, fBeta);
//        cout << "sector: " << nSector << " module: " << nDet << " charge: " << fQ << endl;

// --------------  Emulation of old code  -----------------------------------
//        if(fQ > 0.0f)

// --------------  New code  ------------------------------------------------
        if((fQ = pDigiPar->getCharge(nSector, nDet, fBeta)) > 0.0f)

        {
            pGeantWire = (HShowerGeantWire*)((HLinearCategory*)getOutCat())
                                                          ->getNewSlot(fLoc);
            if(pGeantWire != NULL)
            {
                pGeantWire = new(pGeantWire) HShowerGeantWire;
                pGeantWire->setWireNr(nFiredWire);
                pGeantWire->setXY(fNewX, fNewY);
                pGeantWire->setCharge(fQ);
                pGeantWire->setModule(nDet);
                pGeantWire->setSector(nSector);
                pGeantWire->setTrack(simhit->getTrack());
            }
        }
    }

    return kTRUE;
}
 hshowerhitdigitizer.cc:1
 hshowerhitdigitizer.cc:2
 hshowerhitdigitizer.cc:3
 hshowerhitdigitizer.cc:4
 hshowerhitdigitizer.cc:5
 hshowerhitdigitizer.cc:6
 hshowerhitdigitizer.cc:7
 hshowerhitdigitizer.cc:8
 hshowerhitdigitizer.cc:9
 hshowerhitdigitizer.cc:10
 hshowerhitdigitizer.cc:11
 hshowerhitdigitizer.cc:12
 hshowerhitdigitizer.cc:13
 hshowerhitdigitizer.cc:14
 hshowerhitdigitizer.cc:15
 hshowerhitdigitizer.cc:16
 hshowerhitdigitizer.cc:17
 hshowerhitdigitizer.cc:18
 hshowerhitdigitizer.cc:19
 hshowerhitdigitizer.cc:20
 hshowerhitdigitizer.cc:21
 hshowerhitdigitizer.cc:22
 hshowerhitdigitizer.cc:23
 hshowerhitdigitizer.cc:24
 hshowerhitdigitizer.cc:25
 hshowerhitdigitizer.cc:26
 hshowerhitdigitizer.cc:27
 hshowerhitdigitizer.cc:28
 hshowerhitdigitizer.cc:29
 hshowerhitdigitizer.cc:30
 hshowerhitdigitizer.cc:31
 hshowerhitdigitizer.cc:32
 hshowerhitdigitizer.cc:33
 hshowerhitdigitizer.cc:34
 hshowerhitdigitizer.cc:35
 hshowerhitdigitizer.cc:36
 hshowerhitdigitizer.cc:37
 hshowerhitdigitizer.cc:38
 hshowerhitdigitizer.cc:39
 hshowerhitdigitizer.cc:40
 hshowerhitdigitizer.cc:41
 hshowerhitdigitizer.cc:42
 hshowerhitdigitizer.cc:43
 hshowerhitdigitizer.cc:44
 hshowerhitdigitizer.cc:45
 hshowerhitdigitizer.cc:46
 hshowerhitdigitizer.cc:47
 hshowerhitdigitizer.cc:48
 hshowerhitdigitizer.cc:49
 hshowerhitdigitizer.cc:50
 hshowerhitdigitizer.cc:51
 hshowerhitdigitizer.cc:52
 hshowerhitdigitizer.cc:53
 hshowerhitdigitizer.cc:54
 hshowerhitdigitizer.cc:55
 hshowerhitdigitizer.cc:56
 hshowerhitdigitizer.cc:57
 hshowerhitdigitizer.cc:58
 hshowerhitdigitizer.cc:59
 hshowerhitdigitizer.cc:60
 hshowerhitdigitizer.cc:61
 hshowerhitdigitizer.cc:62
 hshowerhitdigitizer.cc:63
 hshowerhitdigitizer.cc:64
 hshowerhitdigitizer.cc:65
 hshowerhitdigitizer.cc:66
 hshowerhitdigitizer.cc:67
 hshowerhitdigitizer.cc:68
 hshowerhitdigitizer.cc:69
 hshowerhitdigitizer.cc:70
 hshowerhitdigitizer.cc:71
 hshowerhitdigitizer.cc:72
 hshowerhitdigitizer.cc:73
 hshowerhitdigitizer.cc:74
 hshowerhitdigitizer.cc:75
 hshowerhitdigitizer.cc:76
 hshowerhitdigitizer.cc:77
 hshowerhitdigitizer.cc:78
 hshowerhitdigitizer.cc:79
 hshowerhitdigitizer.cc:80
 hshowerhitdigitizer.cc:81
 hshowerhitdigitizer.cc:82
 hshowerhitdigitizer.cc:83
 hshowerhitdigitizer.cc:84
 hshowerhitdigitizer.cc:85
 hshowerhitdigitizer.cc:86
 hshowerhitdigitizer.cc:87
 hshowerhitdigitizer.cc:88
 hshowerhitdigitizer.cc:89
 hshowerhitdigitizer.cc:90
 hshowerhitdigitizer.cc:91
 hshowerhitdigitizer.cc:92
 hshowerhitdigitizer.cc:93
 hshowerhitdigitizer.cc:94
 hshowerhitdigitizer.cc:95
 hshowerhitdigitizer.cc:96
 hshowerhitdigitizer.cc:97
 hshowerhitdigitizer.cc:98
 hshowerhitdigitizer.cc:99
 hshowerhitdigitizer.cc:100
 hshowerhitdigitizer.cc:101
 hshowerhitdigitizer.cc:102
 hshowerhitdigitizer.cc:103
 hshowerhitdigitizer.cc:104
 hshowerhitdigitizer.cc:105
 hshowerhitdigitizer.cc:106
 hshowerhitdigitizer.cc:107
 hshowerhitdigitizer.cc:108
 hshowerhitdigitizer.cc:109
 hshowerhitdigitizer.cc:110
 hshowerhitdigitizer.cc:111
 hshowerhitdigitizer.cc:112
 hshowerhitdigitizer.cc:113
 hshowerhitdigitizer.cc:114
 hshowerhitdigitizer.cc:115
 hshowerhitdigitizer.cc:116
 hshowerhitdigitizer.cc:117
 hshowerhitdigitizer.cc:118
 hshowerhitdigitizer.cc:119
 hshowerhitdigitizer.cc:120
 hshowerhitdigitizer.cc:121
 hshowerhitdigitizer.cc:122
 hshowerhitdigitizer.cc:123
 hshowerhitdigitizer.cc:124
 hshowerhitdigitizer.cc:125
 hshowerhitdigitizer.cc:126
 hshowerhitdigitizer.cc:127
 hshowerhitdigitizer.cc:128
 hshowerhitdigitizer.cc:129
 hshowerhitdigitizer.cc:130
 hshowerhitdigitizer.cc:131
 hshowerhitdigitizer.cc:132
 hshowerhitdigitizer.cc:133
 hshowerhitdigitizer.cc:134
 hshowerhitdigitizer.cc:135
 hshowerhitdigitizer.cc:136
 hshowerhitdigitizer.cc:137
 hshowerhitdigitizer.cc:138
 hshowerhitdigitizer.cc:139
 hshowerhitdigitizer.cc:140
 hshowerhitdigitizer.cc:141
 hshowerhitdigitizer.cc:142
 hshowerhitdigitizer.cc:143
 hshowerhitdigitizer.cc:144
 hshowerhitdigitizer.cc:145
 hshowerhitdigitizer.cc:146
 hshowerhitdigitizer.cc:147
 hshowerhitdigitizer.cc:148
 hshowerhitdigitizer.cc:149
 hshowerhitdigitizer.cc:150
 hshowerhitdigitizer.cc:151
 hshowerhitdigitizer.cc:152
 hshowerhitdigitizer.cc:153
 hshowerhitdigitizer.cc:154
 hshowerhitdigitizer.cc:155
 hshowerhitdigitizer.cc:156
 hshowerhitdigitizer.cc:157
 hshowerhitdigitizer.cc:158
 hshowerhitdigitizer.cc:159
 hshowerhitdigitizer.cc:160
 hshowerhitdigitizer.cc:161
 hshowerhitdigitizer.cc:162
 hshowerhitdigitizer.cc:163
 hshowerhitdigitizer.cc:164
 hshowerhitdigitizer.cc:165
 hshowerhitdigitizer.cc:166
 hshowerhitdigitizer.cc:167
 hshowerhitdigitizer.cc:168
 hshowerhitdigitizer.cc:169
 hshowerhitdigitizer.cc:170
 hshowerhitdigitizer.cc:171
 hshowerhitdigitizer.cc:172
 hshowerhitdigitizer.cc:173
 hshowerhitdigitizer.cc:174
 hshowerhitdigitizer.cc:175
 hshowerhitdigitizer.cc:176
 hshowerhitdigitizer.cc:177
 hshowerhitdigitizer.cc:178
 hshowerhitdigitizer.cc:179
 hshowerhitdigitizer.cc:180
 hshowerhitdigitizer.cc:181
 hshowerhitdigitizer.cc:182
 hshowerhitdigitizer.cc:183
 hshowerhitdigitizer.cc:184
 hshowerhitdigitizer.cc:185
 hshowerhitdigitizer.cc:186
 hshowerhitdigitizer.cc:187
 hshowerhitdigitizer.cc:188
 hshowerhitdigitizer.cc:189
 hshowerhitdigitizer.cc:190
 hshowerhitdigitizer.cc:191
 hshowerhitdigitizer.cc:192
 hshowerhitdigitizer.cc:193
 hshowerhitdigitizer.cc:194
 hshowerhitdigitizer.cc:195
 hshowerhitdigitizer.cc:196
 hshowerhitdigitizer.cc:197
 hshowerhitdigitizer.cc:198
 hshowerhitdigitizer.cc:199
 hshowerhitdigitizer.cc:200
 hshowerhitdigitizer.cc:201
 hshowerhitdigitizer.cc:202
 hshowerhitdigitizer.cc:203
 hshowerhitdigitizer.cc:204
 hshowerhitdigitizer.cc:205
 hshowerhitdigitizer.cc:206
 hshowerhitdigitizer.cc:207
 hshowerhitdigitizer.cc:208
 hshowerhitdigitizer.cc:209
 hshowerhitdigitizer.cc:210
 hshowerhitdigitizer.cc:211
 hshowerhitdigitizer.cc:212
 hshowerhitdigitizer.cc:213
 hshowerhitdigitizer.cc:214
 hshowerhitdigitizer.cc:215
 hshowerhitdigitizer.cc:216
 hshowerhitdigitizer.cc:217
 hshowerhitdigitizer.cc:218
 hshowerhitdigitizer.cc:219
 hshowerhitdigitizer.cc:220
 hshowerhitdigitizer.cc:221
 hshowerhitdigitizer.cc:222
 hshowerhitdigitizer.cc:223
 hshowerhitdigitizer.cc:224
 hshowerhitdigitizer.cc:225
 hshowerhitdigitizer.cc:226
 hshowerhitdigitizer.cc:227
 hshowerhitdigitizer.cc:228
 hshowerhitdigitizer.cc:229
 hshowerhitdigitizer.cc:230
 hshowerhitdigitizer.cc:231
 hshowerhitdigitizer.cc:232
 hshowerhitdigitizer.cc:233
 hshowerhitdigitizer.cc:234
 hshowerhitdigitizer.cc:235
 hshowerhitdigitizer.cc:236
 hshowerhitdigitizer.cc:237
 hshowerhitdigitizer.cc:238
 hshowerhitdigitizer.cc:239
 hshowerhitdigitizer.cc:240
 hshowerhitdigitizer.cc:241
 hshowerhitdigitizer.cc:242
 hshowerhitdigitizer.cc:243
 hshowerhitdigitizer.cc:244
 hshowerhitdigitizer.cc:245
 hshowerhitdigitizer.cc:246
 hshowerhitdigitizer.cc:247
 hshowerhitdigitizer.cc:248
 hshowerhitdigitizer.cc:249
 hshowerhitdigitizer.cc:250
 hshowerhitdigitizer.cc:251
 hshowerhitdigitizer.cc:252
 hshowerhitdigitizer.cc:253
 hshowerhitdigitizer.cc:254
 hshowerhitdigitizer.cc:255
 hshowerhitdigitizer.cc:256
 hshowerhitdigitizer.cc:257
 hshowerhitdigitizer.cc:258
 hshowerhitdigitizer.cc:259
 hshowerhitdigitizer.cc:260
 hshowerhitdigitizer.cc:261
 hshowerhitdigitizer.cc:262
 hshowerhitdigitizer.cc:263
 hshowerhitdigitizer.cc:264
 hshowerhitdigitizer.cc:265
 hshowerhitdigitizer.cc:266
 hshowerhitdigitizer.cc:267
 hshowerhitdigitizer.cc:268
 hshowerhitdigitizer.cc:269
 hshowerhitdigitizer.cc:270
 hshowerhitdigitizer.cc:271
 hshowerhitdigitizer.cc:272
 hshowerhitdigitizer.cc:273
 hshowerhitdigitizer.cc:274
 hshowerhitdigitizer.cc:275
 hshowerhitdigitizer.cc:276
 hshowerhitdigitizer.cc:277
 hshowerhitdigitizer.cc:278
 hshowerhitdigitizer.cc:279
 hshowerhitdigitizer.cc:280
 hshowerhitdigitizer.cc:281
 hshowerhitdigitizer.cc:282
 hshowerhitdigitizer.cc:283
 hshowerhitdigitizer.cc:284
 hshowerhitdigitizer.cc:285
 hshowerhitdigitizer.cc:286
 hshowerhitdigitizer.cc:287
 hshowerhitdigitizer.cc:288
 hshowerhitdigitizer.cc:289
 hshowerhitdigitizer.cc:290
 hshowerhitdigitizer.cc:291
 hshowerhitdigitizer.cc:292
 hshowerhitdigitizer.cc:293
 hshowerhitdigitizer.cc:294
 hshowerhitdigitizer.cc:295
 hshowerhitdigitizer.cc:296
 hshowerhitdigitizer.cc:297
 hshowerhitdigitizer.cc:298
 hshowerhitdigitizer.cc:299
 hshowerhitdigitizer.cc:300
 hshowerhitdigitizer.cc:301
 hshowerhitdigitizer.cc:302
 hshowerhitdigitizer.cc:303
 hshowerhitdigitizer.cc:304
 hshowerhitdigitizer.cc:305
 hshowerhitdigitizer.cc:306
 hshowerhitdigitizer.cc:307
 hshowerhitdigitizer.cc:308
 hshowerhitdigitizer.cc:309
 hshowerhitdigitizer.cc:310
 hshowerhitdigitizer.cc:311
 hshowerhitdigitizer.cc:312
 hshowerhitdigitizer.cc:313
 hshowerhitdigitizer.cc:314
 hshowerhitdigitizer.cc:315