#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"
ClassImp(HShowerHitDigitizer)
HShowerHitDigitizer::HShowerHitDigitizer(const Text_t *name,const Text_t *title,
Float_t unit) : HShowerDigitizer(name,title)
{
piconst = 2 * acos(0.);
fUnit = unit;
}
HShowerHitDigitizer::HShowerHitDigitizer()
{
piconst = 2*acos(0.);
fUnit = 10.;
}
HShowerHitDigitizer::~HShowerHitDigitizer(void)
{
}
Bool_t HShowerHitDigitizer::init() {
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)
{
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
HGeantShower *pGeantHit = (HGeantShower*)pHit;
if (pGeantHit)
{
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;
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;
fY /= fUnit;
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;
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) {
return kFALSE;
}
nFiredWireOut = phWires->lookupWire(y_exit);
if(nFiredWireOut == -1) {
return kFALSE;
}
if(nFiredWireIn > nFiredWireOut) {
i = nFiredWireIn;
nFiredWireIn = nFiredWireOut;
nFiredWireOut = i;
}
for(nFiredWire = nFiredWireIn; nFiredWire <= nFiredWireOut; nFiredWire++)
{
fNewY = phWires->getWirePos(nFiredWire);
if(nFiredWireOut == nFiredWireIn)
{
fNewX = 0.5 * (fX + x_exit);
}
else
{
if(nFiredWire == nFiredWireIn)
fY0 = fY;
else
{
fY0 = 0.5 * (phWires->getWirePos(nFiredWire - 1) + fNewY);
}
if(nFiredWire == nFiredWireOut)
fY1 = y_exit;
else
{
fY1 = 0.5 * (fNewY
+ phWires->getWirePos(nFiredWire + 1));
}
fNewX = fX + 0.5 * (x_exit - fX) * (fY1 + fY0 - 2 * fY)
/ (y_exit - fY);
}
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: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