Assignement operator.
336{
337 if (this!=&rhs)
338 {
339
340
341
342 std::vector<Trk::VxTrackAtVertex*>::iterator VxTracksEnd=this->
m_vxTrackAtVertex.end();
343 for (std::vector<Trk::VxTrackAtVertex*>::iterator i = this->
m_vxTrackAtVertex.begin();
344 i !=VxTracksEnd ; ++i) {
345 delete (*i);
346 (*i) = 0;
347 }
348
349
351
352
353
356
357 for (std::vector<VxVertexOnJetAxis*>::const_iterator DelVtxIter=DelVtxBegin;DelVtxIter!=DelVtxEnd;
358 ++DelVtxIter) {
359
360 if (*DelVtxIter!=nullptr) {
361 delete *DelVtxIter;
362 } else {
363 std::cout << "************************************ ---------------------------- ***********************************************" << std::endl;
364 std::cout << "ERROR in constructor of VxJetCandidate when deleting: one of the VxVertexOnJetAxis is already an empty pointer..." << std::endl;
365 std::cout << "************************************ ---------------------------- ***********************************************" << std::endl;
366 }
367 }
368
370
371
372
373
374 std::map<Trk::VxTrackAtVertex*,Trk::VxTrackAtVertex*> oldToNewPointer;
375
376 std::vector<Trk::VxTrackAtVertex*>::const_iterator RhsVxTracksEnd=rhs.m_vxTrackAtVertex.end();
377 for (std::vector<Trk::VxTrackAtVertex*>::const_iterator itr = rhs.m_vxTrackAtVertex.begin();
378 itr != RhsVxTracksEnd; ++itr) {
379 if (*itr==nullptr) {
380 std::cout << " Pointer of one of the tracks of the object to copy is zero. PROBLEM! Skipping track " << std::endl;
381 continue;
382 }
383 Trk::VxTrackAtVertex* newVxTrackPointer=(*itr)->clone();
384 oldToNewPointer[*itr]=newVxTrackPointer;
386 }
387
388 m_primaryVertex=(rhs.m_primaryVertex!=
nullptr) ?
new VxVertexOnJetAxis(*rhs.m_primaryVertex) :
nullptr;
389
390 if (rhs.m_primaryVertex!=nullptr) {
391 const std::vector<VxTrackAtVertex*> & primaryVectorTracks=rhs.m_primaryVertex->getTracksAtVertex();
392
393 const std::vector<VxTrackAtVertex*>::const_iterator primaryVectorTracksBegin=primaryVectorTracks.begin();
394 const std::vector<VxTrackAtVertex*>::const_iterator primaryVectorTracksEnd=primaryVectorTracks.end();
395
396 std::vector<VxTrackAtVertex*> primaryVectorNew;
397
398 for (std::vector<VxTrackAtVertex*>::const_iterator primaryVectorIter=primaryVectorTracksBegin;
399 primaryVectorIter!=primaryVectorTracksEnd;++primaryVectorIter) {
400 VxTrackAtVertex* newTrackPointer=oldToNewPointer[*primaryVectorIter];
401 if (newTrackPointer!=nullptr) {
402 primaryVectorNew.push_back(newTrackPointer);
403 } else {
404 std::cout << "************************************ ---------------------------- ********************************" << std::endl;
405 std::cout << "Not able to copy old pointer to new one when inizializing tracks of primary vertex to new pointers" << std::endl;
406 std::cout << "************************************ ---------------------------- ********************************" << std::endl;
407 }
408 }
409
411
412 } else {
413 std::cout << "VxJetCandidate EDM class: Warning in COPY: no primary vertex present" << std::endl;
414 }
415
416
417 std::vector<VxVertexOnJetAxis*>::const_iterator VtxBegin=rhs.m_verticesOnJetAxis.begin();
418 std::vector<VxVertexOnJetAxis*>::const_iterator VtxEnd=rhs.m_verticesOnJetAxis.end();
419
420 for (std::vector<VxVertexOnJetAxis*>::const_iterator VtxIter=VtxBegin;VtxIter!=VtxEnd;
421 ++VtxIter) {
422
423 if (*VtxIter!=nullptr) {
424
425 VxVertexOnJetAxis* newVertexOnJetAxis=new VxVertexOnJetAxis(**VtxIter);
426
427
428
429 std::vector<VxTrackAtVertex*> vertexVectorNew;
430
431 const std::vector<VxTrackAtVertex*> & TracksAtVertex=(*VtxIter)->getTracksAtVertex();
432
433 const std::vector<VxTrackAtVertex*>::const_iterator TracksBegin=TracksAtVertex.begin();
434 const std::vector<VxTrackAtVertex*>::const_iterator TracksEnd=TracksAtVertex.end();
435
436 for (std::vector<VxTrackAtVertex*>::const_iterator TrackVectorIter=TracksBegin;
437 TrackVectorIter!=TracksEnd;++TrackVectorIter) {
438 VxTrackAtVertex* newTrackPointer=oldToNewPointer[*TrackVectorIter];
439 if (newTrackPointer!=nullptr) {
440 vertexVectorNew.push_back(newTrackPointer);
441 } else {
442 std::cout << "************************************ ---------------------------- **********************(((((***********" << std::endl;
443 std::cout << "Not able to copy old pointer to new one when inizializing tracks of vertices on jet axis to new pointers" << std::endl;
444 std::cout << "************************************ ---------------------------- **************************************" << std::endl;
445 }
446 }
447 newVertexOnJetAxis->setTracksAtVertex(std::move(vertexVectorNew));
449
450 } else {
451 std::cout << "************************************ ------------- *********************************************" << std::endl;
452 std::cout << "ERROR in copy constructor of VxJetCandidate: one of the VxVertexOnJetAxis is an empty pointer..." << std::endl;
453 std::cout << "************************************ ------------- *********************************************" << std::endl;
454 }
455 }
456
457 if (rhs.m_debugInfo!=nullptr) {
458 m_debugInfo=
new VxJetFitterDebugInfo(*rhs.m_debugInfo);
459 } else {
461 }
462
463
464
466
467
468
469 }
470 return *this;
471}