1 #include "StFgtGeneralBase.h"
2 #include "StRoot/StFgtUtil/geometry/StFgtGeom.h"
3 #include "StRoot/StEvent/StEvent.h"
4 #include "StRoot/StEvent/StFgtCollection.h"
6 #include "StRoot/StEvent/StFgtHitCollection.h"
7 #include "StRoot/StEvent/StFgtHit.h"
8 #include "StRoot/StEvent/StFgtStrip.h"
10 #include "StRoot/StMuDSTMaker/COMMON/StMuDst.h"
11 #include "StRoot/StMuDSTMaker/COMMON/StMuFgtStrip.h"
12 #include "StRoot/StMuDSTMaker/COMMON/StMuFgtAdc.h"
13 #include "StRoot/StMuDSTMaker/COMMON/StMuFgtCluster.h"
14 #include "StRoot/StMuDSTMaker/COMMON/StMuFgtStripAssociation.h"
15 #include "StMuDSTMaker/COMMON/StMuPrimaryVertex.h"
16 #include "StMuDSTMaker/COMMON/StMuDst.h"
17 #include "StMuDSTMaker/COMMON/StMuEvent.h"
18 #include "StarClassLibrary/StThreeVectorF.hh"
30 StFgtGeneralBase::StFgtGeneralBase(
const Char_t* name):
StMaker( name ),m_fillFromEvent(false),evtNr(0),m_effDisk(2), fgtCollection(0), mVertexNumber(0),mUseEHTTrigs(false)
32 sprintf(fileBase,
"%s",
".");
35 pClusters=
new vector<generalCluster>*[6];
36 pClusters[0]=&clustersD1;
37 pClusters[1]=&clustersD2;
38 pClusters[2]=&clustersD3;
39 pClusters[3]=&clustersD4;
40 pClusters[4]=&clustersD5;
41 pClusters[5]=&clustersD6;
43 pStrips=
new vector<generalStrip>[50];
46 LOG_FATAL <<
"StFgtDb not provided and error finding StFgtDbMaker" << endm;
48 mDb = fgtDbMkr->getDbTables();
50 LOG_FATAL <<
"StFgtDb not provided and error retrieving pointer from StFgtDbMaker '"
53 chargeMaxAdcCorr=
new TH2D(
"chargeMaxAdcCorr",
"chargeMaxAdcCorr",50,0,10000,50,0,1000);
54 chargeMaxAdcIntCorr=
new TH2D(
"chargeMaxIntAdcCorr",
"chargeMaxAdcIntCorr",50,0,10000,50,0,1000);
55 hIpZEv=
new TH1D(
"IP_ZEv",
"IP_ZEv",70,-150,150);
56 clusWChargeMatch=
new TH1D(
"clusWChargeMatch",
"clusWChargeMatch",101,0,100);
57 clusWOChargeMatch=
new TH1D(
"clusWOChargeMatch",
"clusWOChargeMatch",101,0,100);
59 hNumPulsesP=
new TH1D*[6*4];
60 hNumChargesP=
new TH1D*[6*4];
61 hNumPulsesR=
new TH1D*[6*4];
62 hNumChargesR=
new TH1D*[6*4];
63 hNumClustersP=
new TH1D*[6*4];
64 hNumClustersR=
new TH1D*[6*4];
67 for(
int iD=0;iD<6;iD++)
69 for(
int iQ=0;iQ<4;iQ++)
71 sprintf(buffer,
"validPulsesP_D%d_Q%d",iD+1,iQ);
72 hNumPulsesP[iD*4+iQ]=
new TH1D(buffer,buffer,100,0,100);
73 sprintf(buffer,
"validPulsesR_D%d_Q%d",iD+1,iQ);
74 hNumPulsesR[iD*4+iQ]=
new TH1D(buffer,buffer,100,0,100);
75 sprintf(buffer,
"validChargesR_D%d_Q%d",iD+1,iQ);
76 hNumChargesR[iD*4+iQ]=
new TH1D(buffer,buffer,200,0,200);
77 sprintf(buffer,
"validChargesP_D%d_Q%d",iD+1,iQ);
78 hNumChargesP[iD*4+iQ]=
new TH1D(buffer,buffer,200,0,200);
79 sprintf(buffer,
"validClustersP_D%d_Q%d",iD+1,iQ);
80 hNumClustersP[iD*4+iQ]=
new TH1D(buffer,buffer,200,0,200);
81 sprintf(buffer,
"validClustersR_D%d_Q%d",iD+1,iQ);
82 hNumClustersR[iD*4+iQ]=
new TH1D(buffer,buffer,200,0,200);
89 void StFgtGeneralBase::SetFileBase(
const Char_t* m_filebase)
91 cout <<
"setting file base to " << m_filebase <<endl;
92 sprintf(fileBase,
"%s",m_filebase);
98 cout <<
"gb finish" <<endl;
99 evStatistics=
new TH1D(
"fgtEventStatistics",
"fgtEventStatistics",10,0,9);
109 sprintf(buffer,
"%s/general.root",fileBase);
110 TFile f(buffer,
"recreate");
111 clusWChargeMatch->Write();
112 clusWOChargeMatch->Write();
113 for(
int iD=0;iD<6;iD++)
115 for(
int iQ=0;iQ<4;iQ++)
117 hNumPulsesP[iD*4+iQ]->Write();
118 hNumChargesP[iD*4+iQ]->Write();
119 hNumClustersP[iD*4+iQ]->Write();
120 hNumPulsesR[iD*4+iQ]->Write();
121 hNumChargesR[iD*4+iQ]->Write();
122 hNumClustersR[iD*4+iQ]->Write();
127 cout <<
"done" <<endl;
131 Bool_t StFgtGeneralBase::validPulse(
generalStrip& strip)
136 Float_t adc1=strip.adc[i];
137 Float_t adc2=strip.adc[i+1];
138 Float_t adc3=strip.adc[i+2];
139 Float_t cut=5*strip.pedErr;
140 if(adc1>cut && adc2 >cut && adc3 > cut)
142 if(adc1 <adc2 && adc2 < adc3)
172 for(
int i=0;i<50;i++)
180 fgtCollection=eventPtr->fgtCollection();
182 fillFromStEvent(fgtCollection);
191 fillFromStEvent(fgtCollection);
197 mapGeoId2Cluster.clear();
202 void StFgtGeneralBase::doEvAssoc()
206 for(vector<generalCluster>::iterator it=pClusters[i]->begin();it!=pClusters[i]->end();it++)
208 Int_t geoId=it->centralStripGeoId;
210 fgtHitColPtr = fgtCollection->getHitCollection( i );
213 const StSPtrVecFgtHit& hitVec = fgtHitColPtr->getHitVec();
214 StSPtrVecFgtHitConstIterator hitIter;
215 for( hitIter = hitVec.begin(); hitIter != hitVec.end(); ++hitIter )
217 Int_t geoId2=(*hitIter)->getCentralStripGeoId();
220 it->fgtHit=(*hitIter);
228 Int_t StFgtGeneralBase::fillFromStEvent(
StFgtCollection* fgtCollectionPtr)
233 if( fgtCollectionPtr ){
237 for( Int_t disc = 0; disc < kFgtNumDiscs; ++disc ){
238 fgtHitColPtr = fgtCollectionPtr->getHitCollection( disc );
240 const StSPtrVecFgtHit& hitVec = fgtHitColPtr->getHitVec();
241 StSPtrVecFgtHitConstIterator hitIter;
244 for( hitIter = hitVec.begin(); hitIter != hitVec.end(); ++hitIter)
246 Short_t quad, discK, strip;
249 Double_t posR=(*hitIter)->getPositionR();
250 Double_t posPhi=(*hitIter)->getPositionPhi();
252 Double_t discZ=getLocDiscZ(disc);
253 float tmpX, tmpY,tmpZ,tmpP,tmpR;
265 Int_t geoId=(*hitIter)->getCentralStripGeoId();
268 StFgtGeom::decodeGeoId((*hitIter)->getCentralStripGeoId(),discK, quad, layer, strip);
269 if(quad<0 && discK<0)
272 cout <<
" disc - geo id mismatch...disk: " <<disc <<
" or " << discK <<
" geo id is " << (*hitIter)->getCentralStripGeoId()<<endl;
273 cout <<
"bad read1" <<endl;
276 #ifdef ONE_HIT_PER_QUAD
277 if(quadsHit.find(quad)!=quadsHit.end())
281 quadsHit.insert(quad);
284 Int_t clusterSize=(*hitIter)->getStripWeightMap().size();
285 Double_t clusterCharge=(*hitIter)->charge();
286 Double_t clusterUncert=(*hitIter)->getChargeUncert();
289 if(mapGeoId2Cluster.find(geoId)==mapGeoId2Cluster.end())
291 pClusters[disc]->push_back(
generalCluster(geoId,layer,discZ,posPhi,posR,quad,disc,strip, clusterSize, clusterCharge,clusterUncert));
293 mapGeoId2Cluster[geoId]=((pClusters[disc]->size()-1));
303 for( Int_t disc = 0; disc < kFgtNumDiscs; disc++ )
306 if( stripCollectionPtr)
308 StSPtrVecFgtStrip& stripVec = stripCollectionPtr->getStripVec();
309 StSPtrVecFgtStripIterator stripIter;
311 for( stripIter = stripVec.begin(); stripIter != stripVec.end(); ++stripIter ){
315 Int_t geoId=strip->getGeoId();
317 Int_t cSeedType=strip->getClusterSeedType();
320 Double_t charge=strip->getCharge();
321 Double_t chargeUncert=strip->getChargeUncert();
322 Short_t quad, discK, stripI;
324 StFgtGeom::decodeGeoId(geoId,discK, quad, layer, stripI);
326 if(discK<0 || discK>6 || quad <0 || quad > 4 || (layer!=
'P' && layer !=
'R'))
333 Int_t rdo, arm, apv, chan;
334 mDb->getElecCoordFromGeoId(geoId, rdo,arm,apv,chan);
335 Int_t elecId = StFgtGeom::encodeElectronicId( rdo, arm, apv, chan );
336 ped = mDb->getPedestalFromElecId( elecId );
337 pedErr = mDb->getPedestalSigmaFromElecId( elecId );
343 cout <<
"bad read3"<<endl;
347 pStrips[disc*4+quad].push_back(
generalStrip(geoId,ped,pedErr,cSeedType,charge, chargeUncert));
348 Double_t maxAdc=-9999;
351 pStrips[disc*4+quad].back().adc[j]=strip->getAdc(j);
352 if(strip->getAdc(j)>maxAdc)
353 maxAdc=strip->getAdc(j);
355 pStrips[disc*4+quad].back().maxAdc=maxAdc;
356 if(mapGeoId2Cluster.find(geoId)!=mapGeoId2Cluster.end())
360 if(mapGeoId2Cluster[geoId]>=(*pClusters[disc]).size())
365 (*pClusters[disc])[mapGeoId2Cluster[geoId] ].centerStripIdx=(pStrips[disc*4+quad].size()-1);
366 (*pClusters[disc])[mapGeoId2Cluster[geoId] ].maxAdc=maxAdc;
380 for(
int iDx=0;iDx<6;iDx++)
383 vector<generalCluster>::iterator it=pClusters[iDx]->begin();
384 for(;it!=pClusters[iDx]->end();it++)
388 Int_t centerStripId=it->centerStripIdx;
396 Double_t maxChargeInt=it->maxAdc;
399 if(centerStripId>=pStrips[iDx*4+it->quad].size())
401 cout <<
"bad read5" <<endl;
404 Int_t oldGeoId=(pStrips[iDx*4+it->quad])[centerStripId].geoId;
405 Int_t m_seedType=(pStrips[iDx*4+it->quad])[centerStripId].seedType;
406 Int_t stripCounter=(centerStripId-1);
407 while(stripCounter>=0)
410 Int_t seedType=(pStrips[iDx*4+it->quad])[stripCounter].seedType;
411 if((seedType==kFgtSeedType1)||(seedType==kFgtSeedType2)||(seedType==kFgtSeedType3))
415 if(!((seedType==kFgtClusterPart)||(seedType==kFgtClusterEndUp)||(seedType==kFgtClusterEndDown)||(seedType==kFgtSeedType1)||(seedType==kFgtSeedType2)||(seedType==kFgtSeedType3)))
417 if(fabs(oldGeoId-(pStrips[iDx*4+it->quad])[stripCounter].geoId)>1)
419 maxChargeInt+=(pStrips[iDx*4+it->quad])[stripCounter].maxAdc;
420 oldGeoId=(pStrips[iDx*4+it->quad])[stripCounter].geoId;
424 stripCounter=(centerStripId+1);
426 while(stripCounter<(pStrips[iDx*4+it->quad]).size())
428 Int_t seedType=(pStrips[iDx*4+it->quad])[stripCounter].seedType;
429 if(!((seedType==kFgtClusterPart)||(seedType==kFgtClusterEndUp)||(seedType==kFgtClusterEndDown)||(seedType==kFgtSeedType1)||(seedType==kFgtSeedType2)||(seedType==kFgtSeedType3)))
431 if(fabs(oldGeoId-(pStrips[iDx*4+it->quad])[stripCounter].geoId)>1)
433 maxChargeInt+=(pStrips[iDx*4+it->quad])[stripCounter].maxAdc;
434 oldGeoId=(pStrips[iDx*4+it->quad])[stripCounter].geoId;
436 if((seedType==kFgtSeedType1)||(seedType==kFgtSeedType2)||(seedType==kFgtSeedType3))
441 it->maxAdcInt=maxChargeInt;
442 it->seedType=m_seedType;
443 chargeMaxAdcCorr->Fill(it->clusterCharge,it->maxAdc);
444 chargeMaxAdcIntCorr->Fill(it->clusterCharge,maxChargeInt);
464 for(
int discIdx=0;discIdx<kFgtNumDiscs;discIdx++)
466 stripCollectionPtr[discIdx] = fgtCollection.getStripCollection( discIdx );
467 hitCollectionPtr[discIdx] = fgtCollection.getHitCollection( discIdx );
481 Bool_t haveEHTTrig=
false;
482 for(
int iTrig=0;iTrig<3;iTrig++)
485 if(l1trig.isTrigger(trigID[iTrig]))
487 cout <<
"found " <<endl;
493 int nPrimV=muDst->numberOfPrimaryVertices();
496 if(1 && (nPrimV>mVertexNumber) && (!mUseEHTTrigs || haveEHTTrig )) {
503 float rank=V->ranking();
532 cout <<
"no muDST!!!" <<endl;
536 TClonesArray *fgtClusters = muDst->
fgtArray( muFgtClusters );
537 TClonesArray *fgtStrips=muDst->
fgtArray(muFgtStrips);
538 TClonesArray *fgtStripAssoc=muDst->
fgtArray(muFgtStripAssociations );
539 TClonesArray *fgtAdc=muDst->
fgtArray(muFgtAdcs);
541 if(fgtStripAssoc && fgtClusters && fgtStrips && fgtAdc)
545 Int_t nAssoc=fgtStripAssoc->GetEntriesFast();
546 Int_t nClus=fgtClusters->GetEntriesFast();
547 Int_t nStrips=fgtStrips->GetEntriesFast();
548 Int_t nAdc=fgtAdc->GetEntriesFast();
551 Int_t rdo, arm, apv, chan;
554 Short_t quad, disc, stripNum;
557 for( Int_t i = 0; i < nAssoc; ++i )
563 Int_t clusIdx=assoc->getClusIdx();
564 if(oldClusIdx!=clusIdx)
569 hitCollectionPtr[disc]->getHitVec().push_back(pFgtHit);
571 Int_t clusCentGeoId=clus->getCentralStripGeoId();
573 Float_t clusCharge=clus->getCharge();
574 Float_t R=clus->getR();
575 Float_t Phi=clus->getPhi();
576 Float_t Z=getLocDiscZ(disc);
577 Float_t ErrR=clus->getErrR();
578 Float_t ErrPhi=clus->getErrPhi();
580 StFgtGeom::decodeGeoId(clusCentGeoId,disc, quad, layer, stripNum);
581 pFgtHit=
new StFgtHit(clusKey,clusCentGeoId,clusCharge, disc, quad, layer, R, ErrR,Phi, ErrPhi,Z,ErrZ);
583 pFgtHit->setChargeUncert(clus->getChargeUncert());
585 pFgtHit->setEvenOddChargeAsy(clus->getEvenOddChargeAsy());
586 pFgtHit->setMaxTimeBin(clus->getMaxTimeBin());
587 pFgtHit->setMaxAdc(clus->getMaxAdc());
588 pFgtHit->setNstrip(clus->getNumStrips());
596 Int_t stripIdx=assoc->getStripIdx();
598 geoId=strip->getGeoId();
599 Float_t stripCharge=strip->getCharge();
600 mDb->getElecCoordFromGeoId(geoId, rdo,arm,apv,chan);
601 StFgtGeom::decodeGeoId(geoId,disc, quad, layer, stripNum);
602 Int_t elecId = StFgtGeom::encodeElectronicId( rdo, arm, apv, chan );
604 StFgtStrip* stripPtr = stripCollectionPtr[disc]->getStrip( elecId );
605 stripPtr->setGeoId(geoId);
606 stripPtr->setCharge(stripCharge);
607 stripPtr->setElecCoords(rdo,arm,apv,chan);
608 Double_t ped = mDb->getPedestalFromElecId( elecId );
609 Double_t pedErr = mDb->getPedestalSigmaFromElecId( elecId );
610 stripPtr->setPed(ped);
611 stripPtr->setPedErr(pedErr);
612 stripPtr->setChargeUncert(strip->getChargeUncert());
613 Int_t seedType=strip->getClusterSeedType();
614 stripPtr->setClusterSeedType(seedType);
615 if(seedType>=kFgtSeedType1&& seedType<=kFgtSeedType5 )
617 pFgtHit->setSeedType(seedType);
621 for(Int_t iAdc=strip->getAdcStartIdx();iAdc<strip->getAdcStartIdx()+strip->getNumSavedTimeBins();iAdc++)
623 if(iAdc>=0 && (iAdc<nAdc))
626 adc=
static_cast< StMuFgtAdc*
>((*fgtAdc)[iAdc]);
627 stripPtr->setAdc(adc->getAdc(),adc->getTimeBin());
631 (pFgtHit->getStripWeightMap())[stripPtr]=1;
635 cout <<
"no assoc..." << assoc <<endl;
640 hitCollectionPtr[disc]->getHitVec().push_back(pFgtHit);
656 Short_t quad, disc, strip;
657 Double_t ordinate, lowerSpan, upperSpan;
660 for(
int iq=0;iq<4;iq++)
665 for(
int iDx=0;iDx<6;iDx++)
667 for(vector<generalCluster>::iterator it=(*pClusters[iDx]).begin();it!=(*pClusters[iDx]).end();it++)
669 StFgtGeom::getPhysicalCoordinate(it->centralStripGeoId,disc,quad,layer,ordinate,lowerSpan,upperSpan);
675 for(
int iQ=0;iQ<4;iQ++)
677 hNumClustersR[iDx*4+iQ]->Fill(iValCluR[iQ]);
678 hNumClustersP[iDx*4+iQ]->Fill(iValCluP[iQ]);
681 for(
int iDx=0;iDx<6;iDx++)
683 for(
int iQ=0;iQ<4;iQ++)
691 Short_t quad, disc, strip;
692 Double_t ordinate, lowerSpan, upperSpan;
693 for(vector<generalStrip>::iterator it=pStrips[iDx*4+iQ].begin();it!=pStrips[iDx*4+iQ].end();it++)
695 StFgtGeom::getPhysicalCoordinate(it->geoId,disc,quad,layer,ordinate,lowerSpan,upperSpan);
696 if(validPulse((*it)))
713 hNumPulsesR[iDx*4+iQ]->Fill(iValPulseR);
714 hNumPulsesP[iDx*4+iQ]->Fill(iValPulseP);
715 hNumChargesR[iDx*4+iQ]->Fill(iValChargeR);
716 hNumChargesP[iDx*4+iQ]->Fill(iValChargeP);
722 Bool_t StFgtGeneralBase::arePointsMatched(vector<generalCluster>::iterator c1, vector<generalCluster>::iterator c2)
730 if(c1->clusterCharge<20 || c2->clusterCharge<20)
732 if(c1->clusterCharge<c2->clusterCharge)
734 tCharge1=c2->clusterCharge;
735 tUncert1=c2->clusterChargeUncert;
736 tCharge2=c1->clusterCharge;
737 tUncert2=c1->clusterChargeUncert;
741 tCharge1=c1->clusterCharge;
742 tUncert1=c1->clusterChargeUncert;
743 tCharge2=c2->clusterCharge;
744 tUncert2=c2->clusterChargeUncert;
748 if(((tCharge1/tCharge2) <chargeMatchCut) ||((tCharge1-tUncert1)/(tCharge2+tUncert2))<chargeMatchCut)
754 void StFgtGeneralBase::checkMatches()
757 for(
int iDx=0;iDx<6;iDx++)
760 Int_t numNotMatched=0;
761 if((*pClusters[iDx]).size()<2)
763 for(vector<generalCluster>::iterator it=(*pClusters[iDx]).begin();it!=((*pClusters[iDx]).end()-1);it++)
768 Char_t layer=it->layer;
769 for(vector<generalCluster>::iterator it2=it+1;it2!=(*pClusters[iDx]).end();it2++)
771 if(it2->layer==layer)
773 if(it->clusterCharge<100 || it2->clusterCharge<100)
778 if(arePointsMatched(it,it2))
787 for(vector<generalCluster>::iterator it=(*pClusters[iDx]).begin();it!=(*pClusters[iDx]).end();it++)
794 clusWChargeMatch->Fill(numMatched);
795 clusWOChargeMatch->Fill(numNotMatched);
801 void StFgtGeneralBase::fillFromEvent(Bool_t fillFromEv)
803 m_fillFromEvent=fillFromEv;
807 void StFgtGeneralBase::doLooseClustering()
809 for(
int iDx=0;iDx<6;iDx++)
813 Int_t stripCounter=0;
814 for(
int iQ=0;iQ<4;iQ++)
816 cout <<
" loose clustering in disk: " << iDx <<
" quad: " << iQ <<
" we have: " << (*pClusters[iDx]).size() <<
" clusters " <<endl;
817 for(vector<generalStrip>::iterator it=pStrips[iDx*4+iQ].begin();it!=pStrips[iDx*4+iQ].end();it++)
820 if(it->charge > 5*it->chargeUncert && it->seedType==kFgtSeedTypeNo)
823 Double_t pedErr=it->pedErr;
826 Int_t numAlmostHighBins=0;
832 if(it->adc[i]>3*pedErr)
835 if(it->adc[i]>peakAdc)
837 if(it->adc[i]> 5*pedErr)
844 Char_t layerPrv, layerNext, layer;
845 Double_t posR, posPhi;
846 Int_t geoId=it->geoId;
847 Short_t quad, disc, strip;
848 Double_t ordinate, lowerSpan, upperSpan;
849 Double_t discZ=getLocDiscZ(disc);
851 StFgtGeom::getPhysicalCoordinate(it->geoId,disc,quad,layer,ordinate,lowerSpan,upperSpan);
852 if((it+1)<pStrips[iDx*4+iQ].end())
853 StFgtGeom::getPhysicalCoordinate((it+1)->geoId,disc,quad,layerNext,ordinate,lowerSpan,upperSpan);
854 if((it-1)>=pStrips[iDx*4+iQ].begin())
855 StFgtGeom::getPhysicalCoordinate(it->geoId,disc,quad,layerPrv,ordinate,lowerSpan,upperSpan);
857 if((it+1)<pStrips[iDx*4+iQ].end() && layerNext==layer && (it+1)->charge > it->charge)
860 Double_t clusterCharge=it->charge;
861 if((it+1)<pStrips[iDx*4+iQ].end() && (layer==layerNext))
862 clusterCharge+=(it+1)->charge;
863 if((it-1)>=pStrips[iDx*4+iQ].begin() && (layer==layerPrv))
864 clusterCharge+=(it-1)->charge;
866 StFgtGeom::decodeGeoId(geoId,disc, quad, layer, strip);
867 StFgtGeom::getPhysicalCoordinate(it->geoId,disc,quad,layer,ordinate,lowerSpan,upperSpan);
870 posPhi = 0.5*(upperSpan + lowerSpan);
873 posR = 0.5*(upperSpan + lowerSpan);
875 posPhi+=StFgtGeom::phiQuadXaxis(quad);
877 pClusters[iDx]->push_back(
generalCluster(geoId,layer,discZ,posPhi,posR,quad,disc,strip, clusterSize, clusterCharge,0.0));
878 mapGeoId2Cluster[geoId]=(pClusters[iDx]->size()-1);
879 (*pClusters[disc])[mapGeoId2Cluster[geoId] ].centerStripIdx=stripCounter;
880 (*pClusters[disc])[mapGeoId2Cluster[geoId] ].maxAdc=it->maxAdc;
882 (*pClusters[disc])[mapGeoId2Cluster[geoId] ].maxAdcInt=it->maxAdc;
890 const Int_t StFgtGeneralBase::trigID[3]={430315,430313,430312};
892 Float_t StFgtGeneralBase::chargeMatchCut=1.5;
static StMuPrimaryVertex * primaryVertex()
return pointer to current primary vertex
virtual void AddData(TDataSet *data, const char *dir=".data")
User methods.
static StMuEvent * event()
returns pointer to current StMuEvent (class holding the event wise information, e.g. event number, run number)
virtual const char * GetName() const
special overload
static TClonesArray * fgtArray(int type)
returns pointer to the n-th TClonesArray from the fgt arrays
Int_t fillFromMuDst(StFgtCollection &)
Collection of trigger ids as stored in MuDst.