122 static const double fixed_time_length = 100;
123 Double_t fEvtTime = FairRootManager::Instance()->GetEventTime();
127 if(FairRunAna::Instance()->IsTimeStamp()){
128 fDigiArray = FairRootManager::Instance()->GetData(
"TSMdtDigi"
133 cout<<
"------------------------PndMdtHitProducer-------------------------------------------"<<endl;
134 cout<<
"|Event No. #"<<
fEventCounter<<
", time-based simulation,"
135 <<
fDigiArray->GetEntriesFast()<<
" digis in time window ["
138 Int_t fCurrentPosition = 0;
139 for(Int_t idigi=fCurrentPosition; idigi<
fDigiArray->GetEntriesFast(); ++idigi){
143 std::cout<<std::endl;
146 cout<<
"------------------------PndMdtHitProducer-------------------------------------------"<<endl;
150 for(Int_t idigi=0; idigi <
fDigiArray->GetEntriesFast(); ++ idigi){
162 Int_t nBox =
fBoxArray->GetEntriesFast();
164 if (nBox==0 || nStrip==0)
return;
170 for(Int_t istrip=0; istrip < nStrip; ++ istrip)
175 Bool_t isFoundinClusters = kFALSE;
176 for(; cit != cend; ++cit){
181 for(; dit != dend; ++dit)
191 isFoundinClusters = kTRUE;
192 aClu.push_back(stripDigi);
196 if( !isFoundinClusters){
198 aClu.push_back(stripDigi);
199 fStripClusters.push_back(aClu);
204 for(Int_t ibox=0; ibox < nBox; ++ ibox)
207 if (
fVerbose>0) cout<<
"pos 0, "<<ibox<<
", "<<boxDigi->
X()<<
", "<<boxDigi->
Y()<<
", "<<boxDigi->
Z()<<endl;
211 Bool_t isFoundinClusters = kFALSE;
212 for(; cit != cend; ++cit){
217 for(; dit != dend; ++dit){
226 isFoundinClusters = kTRUE;
227 aClu.push_back(boxDigi);
231 if( !isFoundinClusters){
233 aClu.push_back(boxDigi);
234 fBoxClusters.push_back(aClu);
239 std::map<Int_t, Int_t> fLayerMapofBox;
242 for(; cit != cend; ++ cit){
244 sort(aClu.begin(), aClu.end(), PndMdtDigiLess());
245 size_t idx = aClu.size()/2;
247 while( idx -- ) ++ dit;
248 if (
fVerbose>0) cout<<
"dit pos 1, "<<
fBoxClusterArray->GetEntriesFast()<<
", "<<(*dit)->X()<<
", "<<(*dit)->Y()<<
", "<<(*dit)->Z()<<endl;
254 std::map<Int_t, Int_t> fLayerMapofStrip;
255 cit = fStripClusters.begin();
256 cend = fStripClusters.end();
257 for(; cit != cend; ++ cit){
259 sort(aClu.begin(), aClu.end(), PndMdtDigiLess());
260 size_t idx = aClu.size()/2;
262 while( idx -- ) ++ dit;
267 std::map<Int_t, Int_t>::iterator mit = fLayerMapofBox.begin();
268 std::map<Int_t, Int_t>::iterator mend = fLayerMapofBox.end();
269 for(; mit != mend; ++mit){
272 mit = fLayerMapofStrip.begin();
273 mend = fLayerMapofStrip.end();
274 for(; mit != mend; ++mit){
286 if (
fVerbose>0) cout<<
"pos 2, "<<iBox<<
", "<<boxDigi->
X()<<
", "<<boxDigi->
Y()<<
", "<<boxDigi->
Z()<<endl;
287 Int_t numStripFound =0 ;
296 if(
TMath::Abs(boxDigi->GetTimeStamp() - stripDigi->GetTimeStamp()) > 3.*14.85)
continue;
302 TVector3 dpos(0.5, 0.5, 0.5);
303 pos.SetX(boxDigi->
X());
304 pos.SetY(boxDigi->
Y());
305 pos.SetZ(stripDigi->
Z());
307 aHit->SetTimeStamp(boxDigi->GetTimeStamp());
313 TVector3 dpos(0.5, 0.5, 0.5);
314 pos.SetX(boxDigi->
X());
315 pos.SetZ(boxDigi->
Z());
316 pos.SetY(stripDigi->
Y());
318 aHit->SetTimeStamp(boxDigi->GetTimeStamp());
322 TVector3 dpos(0.5, 0.5, 0.5);
323 pos.SetX(stripDigi->
X());
324 pos.SetY(boxDigi->
Y());
325 pos.SetZ(boxDigi->
Z());
327 aHit->SetTimeStamp(boxDigi->GetTimeStamp());
Int_t fNumofGroupedStripDigis
TClonesArray * fDigiArray
virtual void Print(const Option_t *opt=0) const
ClustersCollection::iterator ClustersColIter
std::map< Int_t, Int_t > fBoxHitMapofLayer
static Int_t LayerID(Int_t iMod, Int_t iOct, Int_t iLayer)
PndMdtHit * AddHit(Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex)
TClonesArray * fStripClusterArray
std::map< Int_t, Int_t > fMatchMap
TClonesArray * fStripArray
SingleCluster::iterator SingleDigiIter
std::map< Int_t, Int_t > fStripHitMapofLayer
std::vector< std::vector< PndMdtDigi * > > ClustersCollection
std::vector< PndMdtDigi * > SingleCluster
Int_t GetDetectorID() const
Short_t GetModule() const
Int_t fNumofGroupedBoxDigis
TClonesArray * fBoxClusterArray