71 #include "St_sls_Maker.h"
72 #include "TDataSetIter.h"
74 #include "StMessMgr.h"
76 #include "StSsdUtil/StSsdBarrel.hh"
77 #include "StSsdUtil/StSsdPoint.hh"
78 #include "StSsdUtil/StSsdPointList.hh"
79 #include "StSsdUtil/StSsdStrip.hh"
80 #include "StSsdUtil/StSsdStripList.hh"
81 #include "tables/St_sls_strip_Table.h"
82 #include "tables/St_g2t_svt_hit_Table.h"
83 #include "tables/St_g2t_ssd_hit_Table.h"
84 #include "tables/St_ssdDimensions_Table.h"
86 #include "tables/St_slsCtrl_Table.h"
87 #include "StSsdUtil/StSsdBarrel.hh"
89 #include "StBFChain.h"
93 #include "tables/St_g2t_track_Table.h"
94 #include "StThreeVectorD.hh"
95 #include "StPhysicalHelixD.hh"
96 #include "SystemOfUnits.h"
97 #include "StarMagField.h"
98 #include "StMcEvent/StMcSsdHitCollection.hh"
99 #include "StMcEvent.hh"
100 #include "StEventTypes.h"
101 #include "StMcEventTypes.hh"
102 #include "StDAQMaker/StDAQReader.h"
103 #include "St_ObjectSet.h"
104 #include "StThreeVectorF.hh"
105 #include "StSsdDbMaker/StSsdDbMaker.h"
113 St_sls_Maker::~St_sls_Maker(){ }
115 Int_t St_sls_Maker::Init(){
116 if (IAttr(
".histos")) {
117 hRejected =
new TH1F(
"hRejected",
"hits after removal / hits GEANT",110,0,1.1);
122 Int_t St_sls_Maker::InitRun(Int_t runNumber) {
123 assert(StSsdBarrel::Instance());
124 LOG_DEBUG <<
" instance of barrel ... done " << endm;
126 m_ctrl = gStSsdDbMaker->GetSlsCtrl();
128 m_dimensions = gStSsdDbMaker->GetssdDimensions();
130 m_positions = gStSsdDbMaker->GetssdWafersPos();
133 LOG_ERROR <<
"No access to control parameters" << endm;
136 if ((!m_dimensions)||(!m_positions)) {
137 LOG_ERROR <<
"No access to geometry parameters" << endm;
141 LOG_DEBUG <<
" m_positions found " << endl;
142 positions = m_positions->GetTable();
143 N = m_positions->GetNRows();
144 LOG_DEBUG <<
" size is : " <<N << endl;
147 Float_t center[3]={0,0,0};
148 Float_t B[3]={0,0,0};
149 StarMagField::Instance()->BField(center,B);
150 mBField = B[2]*kilogauss;
156 if (Debug()==
true) {LOG_DEBUG <<
"Make() ..." << endm;}
159 ssdDimensions_st *dimensions = m_dimensions->GetTable();
161 setSsdParameters(dimensions);
163 printSsdParameters();}
166 St_sls_strip *sls_strip =
new St_sls_strip(
"sls_strip",40000);
170 St_g2t_svt_hit *g2t_svt_hit = (St_g2t_svt_hit *) geant(
"g2t_svt_hit");
171 St_g2t_ssd_hit *g2t_ssd_hit = (St_g2t_ssd_hit *) geant(
"g2t_ssd_hit");
176 LOG_INFO<<
"#################################################"<<endm;
177 LOG_INFO<<
"#### START OF SSD LAZY SIMULATOR ####"<<endm;
178 LOG_INFO<<
"#### SSD BARREL INITIALIZATION ####"<<endm;
179 LOG_INFO<<
"#### SSD WAFERS INITIALIZATION ####"<<endm;
185 St_DataSet *g2t_tracks = GetDataSet(
"g2t_track");
187 St_g2t_track *g2t_track = (St_g2t_track *) g2t_track_it.
Find(
"g2t_track");
189 LOG_WARN <<
" no track table , abort event because we cannot procede IdealTorealMethod()" << endm;
192 LOG_INFO<<Form(
"Num of SSD geant hits =%ld",g2t_ssd_hit->GetNRows());
194 nSsdHits = readPointFromTableWithEmbedding(g2t_ssd_hit,g2t_track,N,positions);
195 if(g2t_ssd_hit->GetNRows())hRejected->Fill((
float)nSsdHits/g2t_ssd_hit->GetNRows());
201 nSsdHits = readPointFromTable( g2t_svt_hit);
204 LOG_INFO <<
"#### -> "<<nSsdHits<<
" HITS READ FROM TABLE ####"<<endm;
205 StSsdBarrel::Instance()->convertGlobalFrameToOther();
206 Int_t inactiveHit = 0;
209 inactiveHit = removeInactiveHitInTable(g2t_ssd_hit);
215 inactiveHit = removeInactiveHitInTable(g2t_svt_hit);
218 LOG_INFO<<
"#### -> "<<inactiveHit<<
" DEAD ZONE HITS REMOVED ####"<<endm;
220 chargeSharingOverStrip(m_ctrl);
221 Int_t nSsdStrips = writeStripToTable(sls_strip);
223 LOG_INFO<<
"#### -> "<<nSsdStrips<<
" FIRED STRIPS INTO TABLE ####"<<endm;
224 LOG_INFO<<
"#### END OF SSD LAZY SIMULATOR ####"<<endm;
225 LOG_INFO<<
"#################################################"<<endm;
226 StSsdBarrel::Instance()->Reset();
227 if (nSsdStrips) res =
kStOK;
230 LOG_WARN<<
"no output"<<endm;
233 if(Debug()==
true){ LOG_DEBUG <<
"Make():end ... "<< endm;}
237 void St_sls_Maker::PrintInfo() {
238 if (Debug()==
true){ StMaker::PrintInfo();}
242 if (Debug()==
true){LOG_DEBUG <<
"Finish() ... " << endm;}
246 Int_t St_sls_Maker::readPointFromTable(St_g2t_ssd_hit *g2t_ssd_hit) {
247 g2t_ssd_hit_st *g2t = g2t_ssd_hit->GetTable();
252 Int_t minWaf = StSsdBarrel::Instance()->getSsdLayer()*1000;
254 Int_t currWafNumb = 0;
255 Int_t currLadder = 0;
260 Float_t p[3] = {0,0,0};
261 for (i = 0; i < g2t_ssd_hit->GetNRows() ; i++) {
262 currWafId=g2t[i].volume_id%10000;
263 if (currWafId > minWaf) {
265 currLadder=StSsdBarrel::Instance()->idWaferToLadderNumb(currWafId);
266 currWafNumb=StSsdBarrel::Instance()->idWaferToWafer(currWafId);
267 for (j = 0; j<3; j++) {p[j] = g2t[i].p[j];}
268 StSsdBarrel::Instance()->mLadders[currLadder]->mWafers[currWafNumb]->
269 addHit(g2t[i].
id, g2t[i].
id, g2t[i].track_p, g2t[i].x, g2t[i].de, p);
275 Int_t St_sls_Maker::removeInactiveHitInTable(St_g2t_ssd_hit *g2t_ssd_hit) {
276 g2t_ssd_hit_st *g2t = g2t_ssd_hit->GetTable();
277 StSsdPointList *inactiveHits = StSsdBarrel::Instance()->getInactiveHitList();
279 localSize=inactiveHits->getSize();
282 Int_t firstSsdPoint=0;
284 for (iP1 = 0; ((iP1 < g2t_ssd_hit->GetNRows())&&(g2t[iP1].volume_id%10000 < StSsdBarrel::Instance()->getSsdLayer()*1000)) ; iP1++)
287 Int_t isG2tSorted = 1;
289 for (iP2 = firstSsdPoint+1 ; (iP2 < g2t_ssd_hit->GetNRows())&&(isG2tSorted) ;iP2++)
291 if (g2t[iP2].
id < g2t[iP2 - 1].
id) isG2tSorted = 0;
293 StSsdPoint *currToDele = inactiveHits->first();
295 Int_t isAllRemove = 0;
299 Int_t ipKeep = firstSsdPoint;
300 for (ipScan = firstSsdPoint; (ipScan<g2t_ssd_hit->GetNRows()); ipScan++)
302 if ((!isAllRemove)&&(g2t[ipScan].id == currToDele->getNId()))
304 currToDele=inactiveHits->next(currToDele);
305 if (currToDele == 0) isAllRemove = 1;
310 g2t[ipKeep]=g2t[ipScan];
314 g2t_ssd_hit->SetNRows( g2t_ssd_hit->GetNRows() - nDeleted );
319 for (iLoop = 0 ; (iLoop < localSize)&&(!isAllRemove); iLoop++)
322 Int_t nLoopDeleted = 0;
323 for (ipScan = firstSsdPoint; ipScan < g2t_ssd_hit->GetNRows() ; ipScan++)
327 if (g2t[ipScan].
id == currToDele->getNId())
329 currToDele=inactiveHits->next(currToDele);
341 g2t[ipScan]=g2t[ipScan + nLoopDeleted];
343 g2t_ssd_hit->SetNRows( g2t_ssd_hit->GetNRows() - nDeleted );
347 StSsdBarrel::Instance()->renumHitAfterRemove();
352 void St_sls_Maker::chargeSharingOverStrip(slsCtrl_st *ctrl)
354 StSsdBarrel::Instance()->convertToStrip(ctrl[0].pairCreationEnergy,
355 ctrl[0].nstripInACluster,
358 ctrl[0].parIndRightP,
359 ctrl[0].parIndRightN,
361 ctrl[0].parIndLeftN);
364 Int_t St_sls_Maker::writeStripToTable(St_sls_strip *sls_strip) {
367 Int_t currRecord = 0;
369 for (Int_t iLad = 0; iLad < StSsdBarrel::Instance()->getNumberOfLadders(); iLad++)
370 for (Int_t iWaf = 0; iWaf < StSsdBarrel::Instance()->getNWaferPerLadder(); iWaf++) {
371 StSsdWafer *wafer = StSsdBarrel::Instance()->getLadder(iLad)->getWafer(iWaf);
373 Int_t idCurrentWaf = StSsdBarrel::Instance()->getSsdLayer()*1000 +((iWaf+1)*100)+(iLad+1);
378 for (iP = 0; iP < stripP->getSize() ; iP++) {
379 strip.id = currRecord + 1;
380 strip.adc_count = pStripP->getDigitSig();
381 strip.noise_count = 0;
382 strip.id_strip = 10000*(10*pStripP->getNStrip() + 0)+idCurrentWaf;
383 strip.id_cluster = 0;
384 strip.N_hits = pStripP->getNHits();
385 strip.de = pStripP->getAnalogSig();
386 for (Int_t i = 0 ; i < 5 ; i++) {
387 strip.id_hit[i] = pStripP->getIdHit(i);
388 strip.id_mchit[i] = pStripP->getIdMcHit(i);
389 strip.id_mctrack[i] = pStripP->getIdMcTrack(i);
390 LOG_DEBUG<<Form(
"idwafer=%d strip_id=%d side P i=%d IdMcHit=%d IdMcTrack=%d signal(adc)=%d signal(GeV)=%f",
391 idCurrentWaf,pStripP->getNStrip(),i,pStripP->getIdMcHit(i),pStripP->getIdMcTrack(i),pStripP->getDigitSig(),pStripP->getAnalogSig())
394 sls_strip->AddAt(&strip);
396 pStripP = stripP->next(pStripP);
401 for (iN = 0 ; iN < stripN->getSize() ; iN++) {
402 strip.id = currRecord + 1;
403 strip.adc_count = pStripN->getDigitSig();
404 strip.noise_count = 0;
405 strip.id_strip = 10000*(10*pStripN->getNStrip() + 1)+idCurrentWaf;
406 strip.id_cluster = 0;
407 strip.N_hits = pStripN->getNHits() ;
408 strip.de = pStripN->getAnalogSig();
409 for (Int_t i = 0 ; i < 5 ; i++) {
410 strip.id_hit[i] = pStripN->getIdHit(i);
411 strip.id_mchit[i] = pStripN->getIdMcHit(i);
412 strip.id_mctrack[i] = pStripN->getIdMcTrack(i);
413 LOG_DEBUG <<Form(
"idwafer=%d strip_id=%d side N i=%d IdMcHit=%d IdMcTrack=%d signal(adc)=%d signal(GeV)=%f",
414 idCurrentWaf,pStripN->getNStrip(),i,pStripN->getIdMcHit(i),pStripN->getIdMcTrack(i),pStripN->getDigitSig(),pStripN->getAnalogSig())
417 sls_strip->AddAt(&strip);
419 pStripN = stripN->next(pStripN);
426 Int_t St_sls_Maker::readPointFromTableWithEmbedding(St_g2t_ssd_hit *g2t_ssd_hit, St_g2t_track *g2t_track,Int_t N,ssdWafersPosition_st *positions){
428 mcEvent = (
StMcEvent*) GetDataSet(
"StMcEvent");
434 mcCol = mcEvent->ssdHitCollection();
437 LOG_WARN <<
"StSsdEmbeddingMaker -E- no SsdHitCollection!" << endm;
439 mcEvent->setSsdHitCollection(mcCol);
440 LOG_WARN <<
"Make() has added a non existing StSsdHitCollection" <<endm;
446 mcEvent->setSsdHitCollection(mcCol1);
450 g2t_ssd_hit_st *g2t = g2t_ssd_hit->GetTable();
451 g2t_track_st *g2tTrack = 0;
452 g2tTrack = g2t_track->GetTable();
453 LOG_DEBUG <<
"Size of track Table=" << g2t_track->GetNRows() << endm;
454 LOG_DEBUG <<
"Size of SSD Table=" << g2t_ssd_hit->GetNRows() << endm;
457 for(Int_t i =0;i<N;i++)
459 for(Int_t ii=0;ii<3;ii++){
460 LOG_INFO <<
"Id " << positions[i].id <<
" drift["<<ii<<
"] ="<< positions[i].driftDirection[ii]<< endm;
461 LOG_INFO <<
" Transverse["<<ii<<
"] ="<< positions[i].transverseDirection[ii]<< endm;
462 LOG_INFO <<
" Id " << positions[i].id <<
" normal["<<ii<<
"] ="<< positions[i].normalDirection[ii]<< endm;
463 LOG_INFO <<
" center["<<ii<<
"] ="<< positions[i].centerPosition[ii]<< endm;
470 Double_t myVectG[3] = {0,0,0};
471 Double_t myVectL[3] = {0,0,0};
473 Int_t foundGoodHits = 0;
475 Int_t currLadder = 0;
476 Int_t currWafNumb = 0;
478 Int_t FinalLadder = 0;
479 Int_t FinalWafer = 0;
481 Float_t Flag_Energy = 1.0;
482 N = m_positions->GetNRows();
483 NumOfHits = g2t_ssd_hit->GetNRows();
485 for (
int j=0;j<NumOfHits ;j++)
488 currWafId = g2t[j].volume_id%10000;
489 trackId = g2t[j].track_p;
490 if( currWafId < mSsdLayer*1000)
continue;
491 currLadder = StSsdBarrel::Instance()->idWaferToLadderNumb(currWafId);
492 currWafNumb = StSsdBarrel::Instance()->idWaferToWafer(currWafId);
493 LOG_DEBUG <<
"geant hit #"<<j<<
" volumeID="<< currWafId <<
" x=" << g2t[j].x[0] <<
" y=" << g2t[j].x[1] <<
" z=" << g2t[j].x[2]<<endm;
494 VecG.setX(g2t[j].x[0]);
495 VecG.setY(g2t[j].x[1]);
496 VecG.setZ(g2t[j].x[2]);
497 mtm.setX(g2t[j].p[0]);
498 mtm.setY(g2t[j].p[1]);
499 mtm.setZ(g2t[j].p[2]);
500 for (Int_t i = 0; i < N; i++)
502 idWafer = positions[i].id;
503 if ((idWafer > mSsdLayer*1000)&&
504 (idWafer == currWafId)){
506 for(Int_t ii=0;ii<3;ii++){
507 LOG_INFO <<
"Id " << idWafer <<
" drift["<<ii<<
"] ="<< positions[i].driftDirection[ii]<< endm;
508 LOG_INFO <<
" Transverse["<<ii<<
"] ="<< positions[i].transverseDirection[ii]<< endm;
509 LOG_INFO <<
" Id " << idWafer <<
" normal["<<ii<<
"] ="<< positions[i].normalDirection[ii]<< endm;
510 LOG_INFO <<
" center["<<ii<<
"] ="<< positions[i].centerPosition[ii]<< endm;
513 LOG_DEBUG <<
" idWafer =" << idWafer <<
" TrackId="<<trackId <<
" hit id="<<g2t[j].id <<endm;
514 Int_t iok = ideal2RealTranslation(&VecG,&mtm,(
double)g2tTrack[trackId-1].charge,currWafId,i,positions,&FinalLadder,&FinalWafer);
516 LOG_DEBUG <<
"Not found correct wafer "<<endm;
520 g2t[j].de = Flag_Energy*g2t[j].de;
523 Int_t finalVolumeId = 7000+(FinalLadder+1)+(FinalWafer+1)*100;
524 LOG_DEBUG<<Form(
"New ladder=%d New Wafer=%d New volume id =%d",FinalLadder,FinalWafer,finalVolumeId) << endm;
525 g2t[j].volume_id = 10000*(g2t[j].volume_id/10000) + (
long)finalVolumeId;
527 t =
new StMcTrack(&(g2tTrack[trackId-1]));
530 LOG_DEBUG<<Form(
"from mHit:ladder=%ld wafer=%ld energy =%f x=%f y=%f z=%f",mHit->ladder(),mHit->wafer(),mHit->dE(),mHit->position().x(),mHit->position().y(),mHit->position().z())<<endm;
531 mHit->setParentTrack(t);
534 mcEvent->ssdHitCollection()->addHit(mHit);
535 LOG_DEBUG<<Form(
"check :finalVolumeid =%d fromhit ladder=%ld wafer=%ld ParentTrack=%ld",finalVolumeId,mHit->ladder(),mHit->wafer(),mHit->parentTrack()->key())<<endm;
536 if (iok !=
kStOK)
continue;
539 myVectG[0] = VecG.x();
540 myVectG[1] = VecG.y();
541 myVectG[2] = VecG.z();
542 StSsdBarrel::Instance()->mLadders[currLadder]->mWafers[currWafNumb]->MasterToLocal(myVectG,myVectL);
544 VecL.setX(myVectL[0]);
545 VecL.setY(myVectL[1]);
546 VecL.setZ(myVectL[2]);
548 Float_t p[3],tempo[3];
549 for (Int_t jj = 0; jj<3; jj++) {p[jj] = g2t[j].p[jj];tempo[jj] = myVectG[jj];}
550 trackId = g2t[j].track_p;
551 LOG_DEBUG<<Form(
"Final Ladder=%d FinalWafer=%d geantId=%d xg=%f yg=%f zg=%f energy=%f trackId=%d",FinalLadder,FinalWafer,g2t[j].
id,myVectG[0],myVectG[1],myVectG[2],g2t[j].de,trackId)<<endm;
552 StSsdBarrel::Instance()->mLadders[FinalLadder]->mWafers[FinalWafer]->addHit(g2t[j].
id, g2t[j].
id, trackId, tempo, g2t[j].de, p);
558 LOG_DEBUG << Form(
"Size of collection =%ld",mcEvent->ssdHitCollection()->numberOfHits())<<endm;
560 return foundGoodHits;
564 Int_t St_sls_Maker::idWaferToWaferNumb(Int_t idWafer)
567 Int_t iW = (int)((idWafer - mSsdLayer*1000)/100);
568 Int_t iL = idWafer - mSsdLayer*1000 - iW*100;
569 return ((iL-1)*mNWaferPerLadder + iW -1);
572 Int_t St_sls_Maker::idWaferToLadderNumb(Int_t idWafer)
575 Int_t iW = (int)((idWafer - mSsdLayer*1000)/100);
576 Int_t iL = idWafer - mSsdLayer*1000 - iW*100;
580 Int_t St_sls_Maker::waferNumbToIdWafer(Int_t waferNumb)
582 Int_t iL = 1+(int)((waferNumb)/mNLadder);
583 Int_t iW = waferNumb-((iL-1)*mNLadder)+1;
584 return mSsdLayer*1000 + iW*100 + iL;
587 void St_sls_Maker::setSsdParameters(ssdDimensions_st *geom_par){
588 mDimensions = geom_par;
590 mDetectorLargeEdge = 2.*geom_par[0].waferHalfActLength;
591 mDetectorSmallEdge = 2.*geom_par[0].waferHalfActWidth;
593 mNWaferPerLadder = geom_par[0].wafersPerLadder;
594 mNStripPerSide = geom_par[0].stripPerSide;
595 mStripPitch = geom_par[0].stripPitch;
596 mTheta = geom_par[0].stereoAngle;
599 void St_sls_Maker::printSsdParameters(){
600 LOG_INFO <<
"###Ladders = " <<mNLadder<<
"###"<< endm;
601 LOG_INFO <<
"###Wafers per Ladder = " <<mNWaferPerLadder<<
"###"<< endm;
602 LOG_INFO <<
"###half Active LargeEdge = " << mDetectorLargeEdge <<
"###" << endm;
603 LOG_INFO <<
"###half Active SmallEdge = " << mDetectorSmallEdge <<
"###" << endm;
606 void St_sls_Maker::debugUnPeu() {
607 Int_t monladder,monwafer;
608 for(monladder=0;monladder<mNLadder;monladder++)
609 for(monwafer=0;monwafer<mNWaferPerLadder;monwafer++)
610 StSsdBarrel::Instance()->debugUnPeu(monladder,monwafer);
615 if((LocalPosition[0] >(mDetectorLargeEdge/2.)) || (LocalPosition[0] < (-mDetectorLargeEdge/2.)) ||
616 ( LocalPosition[1]>(mDetectorSmallEdge/2.)) || (LocalPosition[1] < (-mDetectorSmallEdge/2.)))
632 wafCent.setX(positions[index].centerPosition[0]);
633 wafCent.setY(positions[index].centerPosition[1]);
634 wafCent.setZ(positions[index].centerPosition[2]);
635 wafNorm.setX(positions[index].normalDirection[0]);
636 wafNorm.setY(positions[index].normalDirection[1]);
637 wafNorm.setZ(positions[index].normalDirection[2]);
638 Int_t Ladder = idWaferToLadderNumb(wafId);
639 Int_t Wafer = idWaferToWafer(wafId);
642 LOG_DEBUG <<
"pos going in : "<< *pos << endm;
643 double s = tHelix.pathLength(wafCent,wafNorm);
645 LOG_DEBUG <<
"Helix pathLength="<< s <<
" x="<<x.x()<<
" y="<<x.y()<<
" z="<<x.z()<<endm;
649 LOG_DEBUG <<
"Track projection on Global x =" << pos->x() <<
" y =" << pos->y() <<
" z =" << pos->z() <<endm;
650 Double_t xg[3] = {0,0,0};
654 Double_t xl[3] = {0,0,0};
656 StSsdBarrel::Instance()->mLadders[Ladder]->mWafers[Wafer]->MasterToLocal(xg,xl);
658 for(Int_t i=0;i<3;i++){
659 LOG_DEBUG <<
"xg["<<i<<
"] = "<<xg[i] <<
"--> to local --> xl["<<i<<
"] = "<<xl[i] <<endm;}
663 LOG_DEBUG <<
" First Pass Coming out " << *pos << endm;
664 x = tHelix.momentumAt(s,mBField);
672 LOG_DEBUG <<
"not found at the first pass, continue "<<endm;
675 Int_t iladder,theLadder = 0;
677 for( iladder = -1; iladder <= 1; iladder++){
678 theLadder = Ladder + iladder;
679 if( theLadder==20) theLadder=0;
681 if( theLadder==-1) theLadder=19;
682 for( Int_t iwaf = 0; iwaf < mNWaferPerLadder; iwaf++){
683 LOG_DEBUG <<
"Wafer ="<< iwaf <<
" Ladder="<<theLadder << endm;
684 wafId = 1000*mSsdLayer + 100*(iwaf+1) + (theLadder+1);
685 Int_t NewLadder = idWaferToLadderNumb(wafId);
686 Int_t NewWafer = idWaferToWafer(wafId);
687 index = idWaferToWaferNumb(wafId);
688 wafCent.setX(positions[index].centerPosition[0]);
689 wafCent.setY(positions[index].centerPosition[1]);
690 wafCent.setZ(positions[index].centerPosition[2]);
691 wafNorm.setX(positions[index].normalDirection[0]);
692 wafNorm.setY(positions[index].normalDirection[1]);
693 wafNorm.setZ(positions[index].normalDirection[2]);
694 double news = tHelix.pathLength(wafCent,wafNorm);
695 if(TMath::Abs(news)>5)
continue;
696 newx = tHelix.at(news);
700 Double_t XG[3]={0,0,0};
704 Double_t XL[3]={0,0,0};
705 StSsdBarrel::Instance()->mLadders[NewLadder]->mWafers[NewWafer]->MasterToLocal(XG,XL);
708 LOG_DEBUG <<
" after search, found it Coming out " << *pos << endm;
709 newx = tHelix.momentumAt(news,mBField);
717 else{LOG_DEBUG <<
" Not found wafer for this hit/track projection, will reject the hit"<<endm;}
723 void St_sls_Maker::Clear(Option_t *option)
725 LOG_DEBUG <<
"Clear()" <<endm;
StSsdStripList * getStripP()
Returns the P-side strip list attached to this wafer.
virtual void AddData(TDataSet *data, const char *dir=".data")
User methods.
virtual void Clear(Option_t *option="")
User defined functions.
StSsdStripList * getStripN()
Returns the N-side strip list attached to this wafer.
Monte Carlo Track class All information on a simulated track is stored in this class: kinematics...
virtual TDataSet * Find(const Char_t *path, TDataSet *rootset=0, Bool_t mkdir=kFALSE, Bool_t titleFlag=kFALSE)
Event data structure to hold all information from a Monte Carlo simulation. This class is the interfa...