diff --git a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp index 3f9c425f1c76eeaaf6ba4dae6e9e869e191ec6d4..9badc084e5c1e1be9c660286b63329c79689f914 100644 --- a/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp +++ b/Reconstruction/SiliconTracking/src/ForwardTrackingAlg.cpp @@ -264,7 +264,7 @@ StatusCode ForwardTrackingAlg::execute(){ for(auto trackerHit : *hitFTDCollections[iCol]){ edm4hep::ConstTrackerHit hit = trackerHit; debug() << "hit " << trackerHit.id() << " " << KiTrackMarlin::getCellID0Info( trackerHit.getCellID() ) - << " " << KiTrackMarlin::getPositionInfo( &hit )<< endmsg; + << " " << KiTrackMarlin::getPositionInfo( hit )<< endmsg; //Make an FTDHit01 from the TrackerHit FTDHit01* ftdHit = new FTDHit01 ( trackerHit , _sectorSystemFTD ); diff --git a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp index 54b2720e816bf0cd13718f936295950aa0b06e5a..2e7ae95c7ce6dc0752f646d9feb8b086d839ee4a 100644 --- a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.cpp @@ -436,7 +436,7 @@ int SiliconTrackingAlg::InitialiseFTD() { //for (int ielem=0; ielem<nelem; ++ielem) { for(auto hit : *hitFTDPixelCol){ - //dm4hep::TrackerHit* hit = hitFTDPixelCol->at(ielem); + //dm4hep::ConstTrackerHit hit = hitFTDPixelCol->at(ielem); TrackerHitExtended * hitExt = new TrackerHitExtended( hit ); //gear::Vector3D U(1.0,hit->getU()[1],hit->getU()[0],gear::Vector3D::spherical); //gear::Vector3D V(1.0,hit->getV()[1],hit->getV()[0],gear::Vector3D::spherical); @@ -477,8 +477,8 @@ int SiliconTrackingAlg::InitialiseFTD() { double Phi = atan2(pos[1],pos[0]); if (Phi < 0.) Phi = Phi + TWOPI; // get the layer number - unsigned int layer = static_cast<unsigned int>(getLayerID(&hit)); - unsigned int petalIndex = static_cast<unsigned int>(getModuleID(&hit)); + unsigned int layer = static_cast<unsigned int>(getLayerID(hit)); + unsigned int petalIndex = static_cast<unsigned int>(getModuleID(hit)); if ( _petalBasedFTDWithOverlaps == true ) { @@ -499,7 +499,7 @@ int SiliconTrackingAlg::InitialiseFTD() { int iPhi = int(Phi/_dPhiFTD); - int side = getSideID(&hit); + int side = getSideID(hit); int iSemiSphere = 0; if (side > 0) @@ -547,7 +547,7 @@ int SiliconTrackingAlg::InitialiseFTD() { //for (int ielem=0; ielem<nelem; ++ielem) { for(auto hit : *hitFTDSpacePointCol){ - //edm4hep::TrackerHit* hit = hitFTDSpacePointCol->at(ielem); + //edm4hep::ConstTrackerHit hit = hitFTDSpacePointCol->at(ielem); TrackerHitExtended * hitExt = new TrackerHitExtended(hit); @@ -574,8 +574,8 @@ int SiliconTrackingAlg::InitialiseFTD() { if (Phi < 0.) Phi = Phi + TWOPI; // get the layer number - unsigned int layer = static_cast<unsigned int>(getLayerID(&hit)); - unsigned int petalIndex = static_cast<unsigned int>(getModuleID(&hit)); + unsigned int layer = static_cast<unsigned int>(getLayerID(hit)); + unsigned int petalIndex = static_cast<unsigned int>(getModuleID(hit)); if ( _petalBasedFTDWithOverlaps == true ) { @@ -597,7 +597,7 @@ int SiliconTrackingAlg::InitialiseFTD() { int iPhi = int(Phi/_dPhiFTD); - int side = getSideID(&hit); + int side = getSideID(hit); int iSemiSphere = 0; if (side > 0) @@ -703,7 +703,7 @@ int SiliconTrackingAlg::InitialiseVTX() { if (Phi < 0.) Phi = Phi + TWOPI; // get the layer number - int layer = getLayerID(&hit); + int layer = getLayerID(hit); if (layer < 0 || layer >= _nLayers) { error() << "SiliconTrackingAlg => fatal error in VTX : layer is outside allowed range : " << layer << endmsg; @@ -749,7 +749,7 @@ int SiliconTrackingAlg::InitialiseVTX() { debug() << "Number of SIT hits = " << nelem << endmsg; _nTotalSITHits = nelem; - //TrackerHit* trkhit = 0; + //ConstTrackerHit trkhit = 0; //TrackerHitPlane* trkhit_P = 0; //TrackerHitZCylinder* trkhit_C = 0; @@ -770,9 +770,9 @@ int SiliconTrackingAlg::InitialiseVTX() { // iv) TrackerHitZCylinder // v) Must be standard TrackerHit - //const edm4hep::TrackerHit* trkhit = hitSITCol->at(ielem); + //const edm4hep::ConstTrackerHit trkhit = hitSITCol->at(ielem); - int layer = getLayerID(&trkhit); + int layer = getLayerID(trkhit); // VXD and SIT are treated as one system so SIT layers start from _nLayersVTX layer = layer + _nLayersVTX; @@ -1145,21 +1145,21 @@ TrackExtended * SiliconTrackingAlg::TestTriplet(TrackerHitExtended * outerHit, float epar[15]; // first hit - xh[0] = outerHit->getTrackerHit()->getPosition()[0]; - yh[0] = outerHit->getTrackerHit()->getPosition()[1]; - zh[0] = float(outerHit->getTrackerHit()->getPosition()[2]); + xh[0] = outerHit->getTrackerHit().getPosition()[0]; + yh[0] = outerHit->getTrackerHit().getPosition()[1]; + zh[0] = float(outerHit->getTrackerHit().getPosition()[2]); wrh[0] = double(1.0/(outerHit->getResolutionRPhi()*outerHit->getResolutionRPhi())); wzh[0] = 1.0/(outerHit->getResolutionZ()*outerHit->getResolutionZ()); // second hit - xh[1] = middleHit->getTrackerHit()->getPosition()[0]; - yh[1] = middleHit->getTrackerHit()->getPosition()[1]; - zh[1] = float(middleHit->getTrackerHit()->getPosition()[2]); + xh[1] = middleHit->getTrackerHit().getPosition()[0]; + yh[1] = middleHit->getTrackerHit().getPosition()[1]; + zh[1] = float(middleHit->getTrackerHit().getPosition()[2]); wrh[1] = double(1.0/(middleHit->getResolutionRPhi()*middleHit->getResolutionRPhi())); wzh[1] = 1.0/(middleHit->getResolutionZ()*middleHit->getResolutionZ()); // third hit - xh[2] = innerHit->getTrackerHit()->getPosition()[0]; - yh[2] = innerHit->getTrackerHit()->getPosition()[1]; - zh[2] = float(innerHit->getTrackerHit()->getPosition()[2]); + xh[2] = innerHit->getTrackerHit().getPosition()[0]; + yh[2] = innerHit->getTrackerHit().getPosition()[1]; + zh[2] = float(innerHit->getTrackerHit().getPosition()[2]); wrh[2] = double(1.0/(innerHit->getResolutionRPhi()*innerHit->getResolutionRPhi())); wzh[2] = 1.0/(innerHit->getResolutionZ()*innerHit->getResolutionZ()); // calculate r and phi for all hits @@ -1195,7 +1195,7 @@ TrackExtended * SiliconTrackingAlg::TestTriplet(TrackerHitExtended * outerHit, // check the truth information for the triplet // define these outside of the ifdef so that we don't need to keep repeating it. - //std::vector<TrackerHit*> hit_list; + //std::vector<ConstTrackerHit> hit_list; //std::vector<MCParticle*> mcps_imo; //std::vector<MCParticle*> mcp_s; int triplet_code = 0; @@ -1225,7 +1225,7 @@ TrackExtended * SiliconTrackingAlg::TestTriplet(TrackerHitExtended * outerHit, for (unsigned ihit = 0; ihit < hit_list.size(); ++ihit) { - EVENT::TrackerHit* trkhit = hit_list[ihit]; + EVENT::ConstTrackerHit trkhit = hit_list[ihit]; std::vector<MCParticle*> mcps; MarlinTrk::getMCParticlesForTrackerHit(trkhit, mcps); @@ -1287,7 +1287,7 @@ TrackExtended * SiliconTrackingAlg::TestTriplet(TrackerHitExtended * outerHit, MarlinCED::drawHelix( _bField , mcp->getCharge(), mcp->getVertex()[0], mcp->getVertex()[1], mcp->getVertex()[2], mcp->getMomentum()[0], mcp->getMomentum()[1], mcp->getMomentum()[2], layer , size , 0x7af774 , 0.0, _helix_max_r , - helix_max_z, mcp->id() ) ; + helix_max_z, mcp.id() ) ; } @@ -1304,14 +1304,14 @@ TrackExtended * SiliconTrackingAlg::TestTriplet(TrackerHitExtended * outerHit, color = 0xFFFFFF; - for( std::vector<TrackerHit* >::const_iterator it = hit_list.begin(); it != hit_list.end() ; it++ ) { + for( std::vector<ConstTrackerHit >::const_iterator it = hit_list.begin(); it != hit_list.end() ; it++ ) { - TrackerHit* trkhit = *it; + ConstTrackerHit trkhit = *it; - ced_hit_ID(trkhit->getPosition()[0], - trkhit->getPosition()[1], - trkhit->getPosition()[2], - marker, layer, size , color, trkhit->id() ) ; + ced_hit_ID(trkhit.getPosition()[0], + trkhit.getPosition()[1], + trkhit.getPosition()[2], + marker, layer, size , color, trkhit.id() ) ; } // hits @@ -1476,7 +1476,7 @@ int SiliconTrackingAlg::BuildTrack(TrackerHitExtended * outerHit, float distance[3]; for (int i=0; i<3; ++i) { - pos[i] = float(currentHit->getTrackerHit()->getPosition()[i]); + pos[i] = float(currentHit->getTrackerHit().getPosition()[i]); } // get the distance of closest approach and distance s traversed to the POCA @@ -1512,10 +1512,10 @@ int SiliconTrackingAlg::BuildTrack(TrackerHitExtended * outerHit, float epar[15]; for (int ih=0;ih<nHits;++ih) { - edm4hep::TrackerHit * trkHit = hvec[ih]->getTrackerHit(); - xh[ih] = trkHit->getPosition()[0]; - yh[ih] = trkHit->getPosition()[1]; - zh[ih] = float(trkHit->getPosition()[2]); + edm4hep::ConstTrackerHit trkHit = hvec[ih]->getTrackerHit(); + xh[ih] = trkHit.getPosition()[0]; + yh[ih] = trkHit.getPosition()[1]; + zh[ih] = float(trkHit.getPosition()[2]); wrh[ih] = double(1.0/(hvec[ih]->getResolutionRPhi()*hvec[ih]->getResolutionRPhi())); wzh[ih] = 1.0/(hvec[ih]->getResolutionZ()*hvec[ih]->getResolutionZ()); rh[ih] = float(sqrt(xh[ih]*xh[ih]+yh[ih]*yh[ih])); @@ -1523,10 +1523,10 @@ int SiliconTrackingAlg::BuildTrack(TrackerHitExtended * outerHit, if (ph[ih] < 0.) ph[ih] = TWOPI + ph[ih]; } - edm4hep::TrackerHit * assignedTrkHit = assignedhit->getTrackerHit(); - xh[nHits] = assignedTrkHit->getPosition()[0]; - yh[nHits] = assignedTrkHit->getPosition()[1]; - zh[nHits] = float(assignedTrkHit->getPosition()[2]); + edm4hep::ConstTrackerHit assignedTrkHit = assignedhit->getTrackerHit(); + xh[nHits] = assignedTrkHit.getPosition()[0]; + yh[nHits] = assignedTrkHit.getPosition()[1]; + zh[nHits] = float(assignedTrkHit.getPosition()[2]); rh[nHits] = float(sqrt(xh[nHits]*xh[nHits]+yh[nHits]*yh[nHits])); ph[nHits] = float(atan2(yh[nHits],xh[nHits])); if (ph[nHits] < 0.) @@ -1666,24 +1666,24 @@ void SiliconTrackingAlg::CreateTrack(TrackExtended * trackAR ) { float epar[15]; float refPoint[3] = {0.,0.,0.}; for (int ih=0;ih<nHits;++ih) { - edm4hep::TrackerHit * trkHit = hitVec[ih]->getTrackerHit(); + edm4hep::ConstTrackerHit trkHit = hitVec[ih]->getTrackerHit(); float rR = hitVec[ih]->getResolutionRPhi(); float rZ = hitVec[ih]->getResolutionZ(); if (int(hitVec[ih]->getTrackExtendedVec().size()) != 0) debug() << "WARNING : HIT POINTS TO TRACK " << endmsg; - xh[ih] = trkHit->getPosition()[0]; - yh[ih] = trkHit->getPosition()[1]; - zh[ih] = float(trkHit->getPosition()[2]); + xh[ih] = trkHit.getPosition()[0]; + yh[ih] = trkHit.getPosition()[1]; + zh[ih] = float(trkHit.getPosition()[2]); wrh[ih] = double(1.0/(rR*rR)); wzh[ih] = 1.0/(rZ*rZ); rh[ih] = float(sqrt(xh[ih]*xh[ih]+yh[ih]*yh[ih])); ph[ih] = float(atan2(yh[ih],xh[ih])); } for (int ih=0;ih<nHitsOld;++ih) { - edm4hep::TrackerHit * trkHit = hitVecOld[ih]->getTrackerHit(); - xh[ih+nHits] = trkHit->getPosition()[0]; - yh[ih+nHits] = trkHit->getPosition()[1]; - zh[ih+nHits] = float(trkHit->getPosition()[2]); + edm4hep::ConstTrackerHit trkHit = hitVecOld[ih]->getTrackerHit(); + xh[ih+nHits] = trkHit.getPosition()[0]; + yh[ih+nHits] = trkHit.getPosition()[1]; + zh[ih+nHits] = float(trkHit.getPosition()[2]); float rR = hitVecOld[ih]->getResolutionRPhi(); float rZ = hitVecOld[ih]->getResolutionZ(); wrh[ih+nHits] = double(1.0/(rR*rR)); @@ -1875,11 +1875,11 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsFast() { TrackerHitExtended * hitExt = hitVec[iH]; TrackExtendedVec& trackVec = hitExt->getTrackExtendedVec(); if (trackVec.size()==0) { - edm4hep::TrackerHit * hit = hitExt->getTrackerHit(); + edm4hep::ConstTrackerHit hit = hitExt->getTrackerHit(); double pos[3]; double radius = 0; for (int i=0; i<3; ++i) { - pos[i] = hit->getPosition()[i]; + pos[i] = hit.getPosition()[i]; radius += pos[i]*pos[i]; } radius = sqrt(radius); @@ -1939,14 +1939,14 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsFast() { for (int IHIT=0;IHIT<NHITS;++IHIT) { // Here we are trying to find if a hits are too close i.e. closer than _minDistToDelta - edm4hep::TrackerHit* trkhit1 = hit->getTrackerHit(); - edm4hep::TrackerHit* trkhit2 = hitVector[IHIT]->getTrackerHit(); + edm4hep::ConstTrackerHit trkhit1 = hit->getTrackerHit(); + edm4hep::ConstTrackerHit trkhit2 = hitVector[IHIT]->getTrackerHit(); - if ( trkhit1->getCellID() == trkhit2->getCellID() ){ // i.e. they are in the same sensor + if ( trkhit1.getCellID() == trkhit2.getCellID() ){ // i.e. they are in the same sensor float distance = 0.; for (int iC=0;iC<3;++iC) { - float posFirst = float(hit->getTrackerHit()->getPosition()[iC]); - float posSecond = float(hitVector[IHIT]->getTrackerHit()->getPosition()[iC]); + float posFirst = float(hit->getTrackerHit().getPosition()[iC]); + float posSecond = float(hitVector[IHIT]->getTrackerHit().getPosition()[iC]); float deltaPos = posFirst - posSecond; distance += deltaPos*deltaPos; } @@ -1970,7 +1970,7 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsFast() { if (layer > _minimalLayerToAttach) { float pos[3]; for (int i=0; i<3; ++i) - pos[i] = hit->getTrackerHit()->getPosition()[i]; + pos[i] = hit->getTrackerHit().getPosition()[i]; float distance[3]; float time = helix.getDistanceToPoint(pos,distance); if (time < 1.0e+10) { @@ -2017,7 +2017,7 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsSlow() { if(isize>maxTrackSize)maxTrackSize = isize; } if (maxTrackSize<=3) { - debug() << " Add non attached hit to list: id = " << hit->getTrackerHit()->id() << endmsg; + debug() << " Add non attached hit to list: id = " << hit->getTrackerHit().id() << endmsg; nonAttachedHits.push_back( hit ); } @@ -2032,12 +2032,12 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsSlow() { int nTrk = int(_trackImplVec.size()); for (int iHit=0; iHit<nNotAttached; ++iHit) { TrackerHitExtended * hit = nonAttachedHits[iHit]; - debug() << " Try hit: id = " << hit->getTrackerHit()->id() << endmsg; + debug() << " Try hit: id = " << hit->getTrackerHit().id() << endmsg; int layer = getLayerID( hit->getTrackerHit() ); if (layer > _minimalLayerToAttach) { float pos[3]; for (int i=0; i<3; ++i) - pos[i] = hit->getTrackerHit()->getPosition()[i]; + pos[i] = hit->getTrackerHit().getPosition()[i]; float minDist = 1e+10; TrackExtended * trackToAttach = NULL; for (int iTrk=0; iTrk<nTrk; ++iTrk) { @@ -2049,22 +2049,22 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsSlow() { for (int IHIT=0;IHIT<NHITS;++IHIT) { // Here we are trying to find if a hits are too close i.e. closer than _minDistToDelta - edm4hep::TrackerHit* trkhit1 = hit->getTrackerHit(); - edm4hep::TrackerHit* trkhit2 = hitVector[IHIT]->getTrackerHit(); + edm4hep::ConstTrackerHit trkhit1 = hit->getTrackerHit(); + edm4hep::ConstTrackerHit trkhit2 = hitVector[IHIT]->getTrackerHit(); - if ( trkhit1->getCellID() == trkhit2->getCellID() ){ // i.e. they are in the same sensor + if ( trkhit1.getCellID() == trkhit2.getCellID() ){ // i.e. they are in the same sensor float distance = 0.; for (int iC=0;iC<3;++iC) { - float posFirst = float(hit->getTrackerHit()->getPosition()[iC]); - float posSecond = float(hitVector[IHIT]->getTrackerHit()->getPosition()[iC]); + float posFirst = float(hit->getTrackerHit().getPosition()[iC]); + float posSecond = float(hitVector[IHIT]->getTrackerHit().getPosition()[iC]); float deltaPos = posFirst - posSecond; distance += deltaPos*deltaPos; } distance = sqrt(distance); if (distance<_minDistToDelta) { consider = false; - debug() << " hit: id = " << hit->getTrackerHit()->id() << " condsidered delta together with hit " << trkhit2->id() << endmsg; + debug() << " hit: id = " << hit->getTrackerHit().id() << " condsidered delta together with hit " << trkhit2.id() << endmsg; break; } } @@ -2090,10 +2090,10 @@ void SiliconTrackingAlg::AttachRemainingVTXHitsSlow() { } if (minDist < _minDistCutAttach && trackToAttach != NULL) { int iopt = 2; - debug() << " Hit: id = " << hit->getTrackerHit()->id() << " : try attachement"<< endmsg; + debug() << " Hit: id = " << hit->getTrackerHit().id() << " : try attachement"<< endmsg; AttachHitToTrack(trackToAttach,hit,iopt); } else { - debug() << " Hit: id = " << hit->getTrackerHit()->id() << " rejected due to distance cut of " <<_minDistCutAttach<< " min distance = " << minDist << endmsg; + debug() << " Hit: id = " << hit->getTrackerHit().id() << " rejected due to distance cut of " <<_minDistCutAttach<< " min distance = " << minDist << endmsg; } } } @@ -2126,7 +2126,7 @@ void SiliconTrackingAlg::AttachRemainingFTDHitsSlow() { TrackerHitExtended * hit = nonAttachedHits[iHit]; float pos[3]; for (int i=0; i<3; ++i) - pos[i] = hit->getTrackerHit()->getPosition()[i]; + pos[i] = hit->getTrackerHit().getPosition()[i]; float minDist = 1e+10; TrackExtended * trackToAttach = NULL; for (int iTrk=0; iTrk<nTrk; ++iTrk) { @@ -2139,7 +2139,7 @@ void SiliconTrackingAlg::AttachRemainingFTDHitsSlow() { // SJA:FIXME: check to see if allowing no hits in the same sensor vs no hits in the same layer works // if (hit->getTrackerHit()->getType() == hitVector[IHIT]->getTrackerHit()->getType()) { - if (hit->getTrackerHit()->getCellID() == hitVector[IHIT]->getTrackerHit()->getCellID()) { + if (hit->getTrackerHit().getCellID() == hitVector[IHIT]->getTrackerHit().getCellID()) { consider = false; break; @@ -2223,7 +2223,7 @@ void SiliconTrackingAlg::AttachRemainingFTDHitsFast() { // SJA:FIXME: check to see if allowing no hits in the same sensor vs no hits in the same layer works for (int IHIT=0;IHIT<NHITS;++IHIT) { // if (hit->getTrackerHit()->getType() == hitVector[IHIT]->getTrackerHit()->getType()) { - if (hit->getTrackerHit()->getCellID() == hitVector[IHIT]->getTrackerHit()->getCellID()) { + if (hit->getTrackerHit().getCellID() == hitVector[IHIT]->getTrackerHit().getCellID()) { consider = false; break; } @@ -2233,7 +2233,7 @@ void SiliconTrackingAlg::AttachRemainingFTDHitsFast() { if (consider) { float pos[3]; for (int i=0;i<3;++i) { - pos[i] = hit->getTrackerHit()->getPosition()[i]; + pos[i] = hit->getTrackerHit().getPosition()[i]; } float distance[3]; float time = helix.getDistanceToPoint(pos,distance); @@ -2334,9 +2334,9 @@ void SiliconTrackingAlg::TrackingInFTD() { TrackerHitExtended * hitInner = hitVecInner[iInner]; HelixClass helix; // std::cout << endmsg; - // std::cout << "Outer Hit Type " << hitOuter->getTrackerHit()->getType() << " z = " << hitOuter->getTrackerHit()->getPosition()[2] - // << "\nMiddle Hit Type "<< hitMiddle->getTrackerHit()->getType() << " z = " << hitMiddle->getTrackerHit()->getPosition()[2] - // << "\nInner Hit Type "<< hitInner->getTrackerHit()->getType() << " z = " << hitInner->getTrackerHit()->getPosition()[2] << endmsg; + // std::cout << "Outer Hit Type " << hitOuter->getTrackerHit()->getType() << " z = " << hitOuter->getTrackerHit().getPosition()[2] + // << "\nMiddle Hit Type "<< hitMiddle->getTrackerHit()->getType() << " z = " << hitMiddle->getTrackerHit().getPosition()[2] + // << "\nInner Hit Type "<< hitInner->getTrackerHit()->getType() << " z = " << hitInner->getTrackerHit().getPosition()[2] << endmsg; debug() << " " << std::setw(3) << ipOuter << " " << std::setw(3) << ipMiddle << " " << std::setw(3) << ipInner << " " @@ -2401,10 +2401,10 @@ int SiliconTrackingAlg::BuildTrackFTD(TrackExtended * trackAR, int * nLR, int iS int nH = int(hitVec.size()); for (int iH=0; iH<nH; ++iH) { TrackerHitExtended * hit = hitVec[iH]; - edm4hep::TrackerHit * trkHit = hit->getTrackerHit(); + edm4hep::ConstTrackerHit trkHit = hit->getTrackerHit(); float pos[3]; for (int i=0;i<3;++i) - pos[i] = float(trkHit->getPosition()[i]); + pos[i] = float(trkHit.getPosition()[i]); float distance[3]; float time = helix.getDistanceToPoint(pos,distance); if (time < 1.0e+10) { @@ -2444,10 +2444,10 @@ int SiliconTrackingAlg::AttachHitToTrack(TrackExtended * trackAR, TrackerHitExte float epar[15]; for (int i=0; i<nHits; ++i) { - edm4hep::TrackerHit * trkHit = hitVec[i]->getTrackerHit(); - xh[i] = double(trkHit->getPosition()[0]); - yh[i] = double(trkHit->getPosition()[1]); - zh[i] = float(trkHit->getPosition()[2]); + edm4hep::ConstTrackerHit trkHit = hitVec[i]->getTrackerHit(); + xh[i] = double(trkHit.getPosition()[0]); + yh[i] = double(trkHit.getPosition()[1]); + zh[i] = float(trkHit.getPosition()[2]); ph[i] = float(atan2(yh[i],xh[i])); rh[i] = float(sqrt(xh[i]*xh[i]+yh[i]*yh[i])); float rR = hitVec[i]->getResolutionRPhi(); @@ -2456,10 +2456,10 @@ int SiliconTrackingAlg::AttachHitToTrack(TrackExtended * trackAR, TrackerHitExte wzh[i] = 1.0/(rZ*rZ); } - edm4hep::TrackerHit * trkHit = hit->getTrackerHit(); - xh[nHits] = double(trkHit->getPosition()[0]); - yh[nHits] = double(trkHit->getPosition()[1]); - zh[nHits] = float(trkHit->getPosition()[2]); + edm4hep::ConstTrackerHit trkHit = hit->getTrackerHit(); + xh[nHits] = double(trkHit.getPosition()[0]); + yh[nHits] = double(trkHit.getPosition()[1]); + zh[nHits] = float(trkHit.getPosition()[2]); ph[nHits] = float(atan2(yh[nHits],xh[nHits])); rh[nHits] = float(sqrt(xh[nHits]*xh[nHits]+yh[nHits]*yh[nHits])); @@ -2586,7 +2586,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { lh[ihit] = 1; // only hits which have lh=1 will be used for the fit // get the pointer to the lcio trackerhit for this hit - edm4hep::TrackerHit * trkHit = hitVec[ihit]->getTrackerHit(); + edm4hep::ConstTrackerHit trkHit = hitVec[ihit]->getTrackerHit(); int det = getDetectorID(trkHit); @@ -2600,7 +2600,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { for (int lhit=0;lhit<ihit;++lhit) { // get the pointer to the lcio trackerhit for the previously checked hit - edm4hep::TrackerHit * trkHitS = hitVec[lhit]->getTrackerHit(); + edm4hep::ConstTrackerHit trkHitS = hitVec[lhit]->getTrackerHit(); // int layerS = getLayerID(trkHitS); @@ -2612,14 +2612,14 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { // check if the hits have the same layer and petal number // hitVec[ihit]-> // if ((layer == layerS) && (moduleIndex==moduleIndexS) && (lh[lhit] == 1)) { - if ( (trkHit->getCellID() == trkHitS->getCellID()) && (lh[lhit] == 1)) { + if ( (trkHit.getCellID() == trkHitS.getCellID()) && (lh[lhit] == 1)) { // get the position of the hits float xP[3]; float xPS[3]; for (int iC=0;iC<3;++iC) { - xP[iC] = float(trkHit->getPosition()[iC]); - xPS[iC] = float(trkHitS->getPosition()[iC]); + xP[iC] = float(trkHit.getPosition()[iC]); + xPS[iC] = float(trkHitS.getPosition()[iC]); } // get the intersection of the helix with the either the cylinder or plane containing the hit @@ -2662,17 +2662,17 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { delete helix; - std::vector<TrackerHit*> trkHits; - std::vector<TrackerHit*> trkHits_used_inFit; + std::vector<ConstTrackerHit> trkHits; + std::vector<ConstTrackerHit> trkHits_used_inFit; int nFit = 0; for (int i=0; i<nHits; ++i) { // check if the hit has been rejected as being on the same layer and further from the helix lh==0 if (lh[i] == 1) { - edm4hep::TrackerHit * trkHit = hitVec[i]->getTrackerHit(); + edm4hep::ConstTrackerHit trkHit = hitVec[i]->getTrackerHit(); debug() << "TrackerHit " << i << " address = " << trkHit << endmsg; nFit++; - if(trkHit) { + if(trkHit.isAvailable()) { trkHits.push_back(trkHit); } else{ @@ -2709,12 +2709,12 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { covMatrix[14] = ( _initialTrackError_tanL ); //sigma_tanl^2 - std::vector< std::pair<float, edm4hep::TrackerHit*> > r2_values; + std::vector< std::pair<float, edm4hep::ConstTrackerHit> > r2_values; r2_values.reserve(trkHits.size()); - for (std::vector<edm4hep::TrackerHit*>::iterator it=trkHits.begin(); it!=trkHits.end(); ++it) { - edm4hep::TrackerHit* h = *it; - float r2 = h->getPosition()[0]*h->getPosition()[0]+h->getPosition()[1]*h->getPosition()[1]; + for (std::vector<edm4hep::ConstTrackerHit>::iterator it=trkHits.begin(); it!=trkHits.end(); ++it) { + edm4hep::ConstTrackerHit h = *it; + float r2 = h.getPosition()[0]*h.getPosition()[0]+h.getPosition()[1]*h.getPosition()[1]; r2_values.push_back(std::make_pair(r2, *it)); } @@ -2723,7 +2723,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { trkHits.clear(); trkHits.reserve(r2_values.size()); - for (std::vector< std::pair<float, edm4hep::TrackerHit*> >::iterator it=r2_values.begin(); it!=r2_values.end(); ++it) { + for (std::vector< std::pair<float, edm4hep::ConstTrackerHit> >::iterator it=r2_values.begin(); it!=r2_values.end(); ++it) { trkHits.push_back(it->second); } //std::cout << "fucd------------------3 " << _trksystem << std::endl; @@ -2782,16 +2782,16 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { #endif */ - std::vector<std::pair<edm4hep::TrackerHit* , double> > hits_in_fit ; - std::vector<std::pair<edm4hep::TrackerHit* , double> > outliers ; - std::vector<edm4hep::TrackerHit*> all_hits; + std::vector<std::pair<edm4hep::ConstTrackerHit , double> > hits_in_fit ; + std::vector<std::pair<edm4hep::ConstTrackerHit , double> > outliers ; + std::vector<edm4hep::ConstTrackerHit> all_hits; all_hits.reserve(300); marlinTrk->getHitsInFit(hits_in_fit); for ( unsigned ihit = 0; ihit < hits_in_fit.size(); ++ihit) { debug() << "Hit address=" << hits_in_fit[ihit].first << endmsg; - edm4hep::TrackerHit* trk = hits_in_fit[ihit].first; + edm4hep::ConstTrackerHit trk = hits_in_fit[ihit].first; all_hits.push_back(trk);//hits_in_fit[ihit].first); } @@ -2813,7 +2813,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { int nhits_in_ftd = track.getSubDetectorHitNumbers(1); int nhits_in_sit = track.getSubDetectorHitNumbers(2); - //debug() << " Hit numbers for Track "<< track->id() << ": " + //debug() << " Hit numbers for Track "<< track.id() << ": " debug() << " Hit numbers for Track "<< iTrk <<": " << " vxd hits = " << nhits_in_vxd << " ftd hits = " << nhits_in_ftd diff --git a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.h b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.h index 67ffdb960ed726b73cf352c5099aa037740d0428..9f21225cb0f77399e8a8351a610673e07674fb68 100644 --- a/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.h +++ b/Reconstruction/SiliconTracking/src/SiliconTrackingAlg.h @@ -402,11 +402,11 @@ class SiliconTrackingAlg : public GaudiAlgorithm { // int _createMap; UTIL::BitField64* _encoder; - int getDetectorID(edm4hep::TrackerHit* hit) { _encoder->setValue(hit->getCellID()); return (*_encoder)[lcio::ILDCellID0::subdet]; } - int getSideID(edm4hep::TrackerHit* hit) { _encoder->setValue(hit->getCellID()); return (*_encoder)[lcio::ILDCellID0::side]; }; - int getLayerID(edm4hep::TrackerHit* hit) { _encoder->setValue(hit->getCellID()); return (*_encoder)[lcio::ILDCellID0::layer]; }; - int getModuleID(edm4hep::TrackerHit* hit) { _encoder->setValue(hit->getCellID()); return (*_encoder)[lcio::ILDCellID0::module]; }; - int getSensorID(edm4hep::TrackerHit* hit) { _encoder->setValue(hit->getCellID()); return (*_encoder)[lcio::ILDCellID0::sensor]; }; + int getDetectorID(edm4hep::ConstTrackerHit hit) { _encoder->setValue(hit.getCellID()); return (*_encoder)[lcio::ILDCellID0::subdet]; } + int getSideID(edm4hep::ConstTrackerHit hit) { _encoder->setValue(hit.getCellID()); return (*_encoder)[lcio::ILDCellID0::side]; }; + int getLayerID(edm4hep::ConstTrackerHit hit) { _encoder->setValue(hit.getCellID()); return (*_encoder)[lcio::ILDCellID0::layer]; }; + int getModuleID(edm4hep::ConstTrackerHit hit) { _encoder->setValue(hit.getCellID()); return (*_encoder)[lcio::ILDCellID0::module]; }; + int getSensorID(edm4hep::ConstTrackerHit hit) { _encoder->setValue(hit.getCellID()); return (*_encoder)[lcio::ILDCellID0::sensor]; }; StatusCode setupGearGeom() ; diff --git a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp index bae1388b078d23849e7cae52da7d419817835b37..e907b93acee81c58fc62febdb471e62107c5b13a 100644 --- a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp +++ b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.cpp @@ -191,7 +191,7 @@ StatusCode SpacePointBuilderAlg::execute(){ // add tolerence strip_length_mm = strip_length_mm * (1.0 + _striplength_tolerance); try{ - edm4hep::TrackerHit spacePoint = createSpacePoint( &hitFront, &hitBack, strip_length_mm); + edm4hep::TrackerHit spacePoint = createSpacePoint( hitFront, hitBack, strip_length_mm); //UTIL::CellIDEncoder<TrackerHitImpl> cellid_encoder( UTIL::ILDCellID0::encoder_string , spCol ); //cellid_encoder.setValue( cellID0 ); //give the new hit, the CellID0 of the front hit @@ -260,32 +260,32 @@ StatusCode SpacePointBuilderAlg::finalize(){ return GaudiAlgorithm::finalize(); } -edm4hep::TrackerHit SpacePointBuilderAlg::createSpacePoint( edm4hep::TrackerHit* a , edm4hep::TrackerHit* b, double stripLength ){ +edm4hep::TrackerHit SpacePointBuilderAlg::createSpacePoint( edm4hep::ConstTrackerHit a , edm4hep::ConstTrackerHit b, double stripLength ){ - const edm4hep::Vector3d& pa = a->getPosition(); + const edm4hep::Vector3d& pa = a.getPosition(); double xa = pa[0]; double ya = pa[1]; double za = pa[2]; CLHEP::Hep3Vector PA( xa,ya,za ); //double du_a = a->getdU(); - float du_a = a->getCovMatrix(2); + float du_a = a.getCovMatrix(2); - gear::MeasurementSurface const* msA = _GEAR->getMeasurementSurfaceStore().GetMeasurementSurface( a->getCellID() ); + gear::MeasurementSurface const* msA = _GEAR->getMeasurementSurfaceStore().GetMeasurementSurface( a.getCellID() ); gear::CartesianCoordinateSystem* ccsA = dynamic_cast< gear::CartesianCoordinateSystem* >( msA->getCoordinateSystem() ); CLHEP::Hep3Vector WA = ccsA->getLocalZAxis(); // the vector W of the local coordinate system the measurement surface has CLHEP::Hep3Vector VA = ccsA->getLocalYAxis(); // the vector V of the local coordinate system the measurement surface has CLHEP::Hep3Vector UA = ccsA->getLocalXAxis(); // the vector U of the local coordinate system the measurement surface has - const edm4hep::Vector3d& pb = b->getPosition(); + const edm4hep::Vector3d& pb = b.getPosition(); double xb = pb[0]; double yb = pb[1]; double zb = pb[2]; CLHEP::Hep3Vector PB( xb,yb,zb ); //double du_b = b->getdU(); - float du_b = b->getCovMatrix(2); + float du_b = b.getCovMatrix(2); - gear::MeasurementSurface const* msB = _GEAR->getMeasurementSurfaceStore().GetMeasurementSurface( b->getCellID() ); + gear::MeasurementSurface const* msB = _GEAR->getMeasurementSurfaceStore().GetMeasurementSurface( b.getCellID() ); gear::CartesianCoordinateSystem* ccsB = dynamic_cast< gear::CartesianCoordinateSystem* >( msB->getCoordinateSystem() ); CLHEP::Hep3Vector WB = ccsB->getLocalZAxis(); // the vector W of the local coordinate system the measurement surface has CLHEP::Hep3Vector VB = ccsB->getLocalYAxis(); // the vector V of the local coordinate system the measurement surface has @@ -464,7 +464,7 @@ TrackerHitImpl* SpacePointBuilderAlg::createSpacePointOld( TrackerHitPlane* a , streamlog_out( DEBUG2 ) << "\t OLD OLD OLD OLD\n"; - const double* p1 = a->getPosition(); + const double* p1 = a.getPosition(); double x1 = p1[0]; double y1 = p1[1]; double z1 = p1[2]; @@ -472,7 +472,7 @@ TrackerHitImpl* SpacePointBuilderAlg::createSpacePointOld( TrackerHitPlane* a , float ex1 = cos( v1[1] ) * sin( v1[0] ); float ey1 = sin( v1[1] ) * sin( v1[0] ); - const double* p2 = b->getPosition(); + const double* p2 = b.getPosition(); double x2 = p2[0]; double y2 = p2[1]; double z2 = p2[2]; @@ -499,7 +499,7 @@ TrackerHitImpl* SpacePointBuilderAlg::createSpacePointOld( TrackerHitPlane* a , // Check if the new hit is within the boundary CLHEP::Hep3Vector globalPoint(x,y,z); - // gear::MeasurementSurface* ms = gear::MeasurementSurfaceStore::Instance().GetMeasurementSurface( a->getCellID() ); + // gear::MeasurementSurface* ms = gear::MeasurementSurfaceStore::Instance().GetMeasurementSurface( a.getCellID() ); CLHEP::Hep3Vector localPoint = ms->getCoordinateSystem()->getLocalPoint(globalPoint); localPoint.setZ( 0. ); // we set w to 0 so it is in the plane ( we are only interested if u and v are in or out of range, to exclude w from the check it is set to 0) if( !ms->isLocalInBoundary( localPoint ) ){ diff --git a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.h b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.h index 0106b89bd34ac9e598c59f7a85f278a63fef008a..6f731e62abecbbd9c1fba0c2cf9530801844ec83 100644 --- a/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.h +++ b/Reconstruction/SiliconTracking/src/SpacePointBuilderAlg.h @@ -144,7 +144,7 @@ class SpacePointBuilderAlg : public GaudiAlgorithm { /** @return a spacepoint (in the form of a TrackerHitImpl* ) created from two TrackerHitPlane* which stand for si-strips */ - edm4hep::TrackerHit createSpacePoint( edm4hep::TrackerHit* a , edm4hep::TrackerHit* b, double stripLength ); + edm4hep::TrackerHit createSpacePoint( edm4hep::ConstTrackerHit a , edm4hep::ConstTrackerHit b, double stripLength ); // TrackerHitImpl* createSpacePointOld( TrackerHitPlane* a , TrackerHitPlane* b ); diff --git a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp index 541c5b16791824d317218e6cf68a20b9fada4dba..2a241cf569d90b1a80953f53b959014d7e937bec 100644 --- a/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp +++ b/Reconstruction/SiliconTracking/src/TrackSubsetAlg.cpp @@ -206,7 +206,7 @@ StatusCode TrackSubsetAlg::execute(){ edm4hep::Track* track = accepted[i]; std::vector<edm4hep::ConstTrackerHit> trackerHitsObj; - std::vector<edm4hep::TrackerHit*> trackerHits; + std::vector<edm4hep::ConstTrackerHit> trackerHits; std::copy(track->trackerHits_begin(), track->trackerHits_end(), std::back_inserter(trackerHitsObj)); for(unsigned i=0; i<trackerHitsObj.size(); i++){ @@ -225,12 +225,12 @@ StatusCode TrackSubsetAlg::execute(){ covMatrix[9] = ( _initialTrackError_z0 ); //sigma_z0^2 covMatrix[14] = ( _initialTrackError_tanL ); //sigma_tanl^2 - std::vector< std::pair<float, edm4hep::TrackerHit*> > r2_values; + std::vector< std::pair<float, edm4hep::ConstTrackerHit> > r2_values; r2_values.reserve(trackerHits.size()); - for (std::vector<edm4hep::TrackerHit*>::iterator it=trackerHits.begin(); it!=trackerHits.end(); ++it) { - edm4hep::TrackerHit* h = *it; - float r2 = h->getPosition()[0]*h->getPosition()[0]+h->getPosition()[1]*h->getPosition()[1]; + for (std::vector<edm4hep::ConstTrackerHit>::iterator it=trackerHits.begin(); it!=trackerHits.end(); ++it) { + edm4hep::ConstTrackerHit h = *it; + float r2 = h.getPosition()[0]*h.getPosition()[0]+h.getPosition()[1]*h.getPosition()[1]; r2_values.push_back(std::make_pair(r2, *it)); } @@ -239,7 +239,7 @@ StatusCode TrackSubsetAlg::execute(){ trackerHits.clear(); trackerHits.reserve(r2_values.size()); - for (std::vector< std::pair<float, edm4hep::TrackerHit*> >::iterator it=r2_values.begin(); it!=r2_values.end(); ++it) { + for (std::vector< std::pair<float, edm4hep::ConstTrackerHit> >::iterator it=r2_values.begin(); it!=r2_values.end(); ++it) { trackerHits.push_back(it->second); } @@ -264,9 +264,9 @@ StatusCode TrackSubsetAlg::execute(){ // Add hit numbers - std::vector<std::pair<edm4hep::TrackerHit* , double> > hits_in_fit ; - std::vector<std::pair<edm4hep::TrackerHit* , double> > outliers ; - std::vector<edm4hep::TrackerHit*> all_hits; + std::vector<std::pair<edm4hep::ConstTrackerHit , double> > hits_in_fit ; + std::vector<std::pair<edm4hep::ConstTrackerHit , double> > outliers ; + std::vector<edm4hep::ConstTrackerHit> all_hits; all_hits.reserve(300); marlinTrk->getHitsInFit(hits_in_fit); diff --git a/Service/TrackSystemSvc/TrackSystemSvc/IMarlinTrack.h b/Service/TrackSystemSvc/TrackSystemSvc/IMarlinTrack.h index 2abcdd52a59e1955445375b91c1eb4d5b2b69a5d..901b5a276def17154b5c4a51afcb5c6c836a199b 100644 --- a/Service/TrackSystemSvc/TrackSystemSvc/IMarlinTrack.h +++ b/Service/TrackSystemSvc/TrackSystemSvc/IMarlinTrack.h @@ -6,6 +6,7 @@ //#include "lcio.h" #include "edm4hep/TrackerHit.h" +#include "edm4hep/TrackerHitConst.h" #include "edm4hep/TrackState.h" //#include "gearimpl/Vector3D.h" @@ -54,7 +55,7 @@ namespace MarlinTrk{ /** add hit to track - the hits have to be added ordered in time ( i.e. typically outgoing ) * this order will define the direction of the energy loss used in the fit */ - virtual int addHit(edm4hep::TrackerHit* hit) = 0 ; + virtual int addHit(edm4hep::ConstTrackerHit hit) = 0 ; /** initialise the fit using the hits added up to this point - * the fit direction has to be specified using IMarlinTrack::backward or IMarlinTrack::forward. @@ -81,12 +82,12 @@ namespace MarlinTrk{ /** update the current fit using the supplied hit, return code via int. Provides the Chi2 increment to the fit from adding the hit via reference. * the given hit will not be added if chi2increment > maxChi2Increment. */ - virtual int addAndFit( edm4hep::TrackerHit* hit, double& chi2increment, double maxChi2Increment=DBL_MAX ) = 0 ; + virtual int addAndFit( edm4hep::ConstTrackerHit hit, double& chi2increment, double maxChi2Increment=DBL_MAX ) = 0 ; /** obtain the chi2 increment which would result in adding the hit to the fit. This method will not alter the current fit, and the hit will not be stored in the list of hits or outliers */ - virtual int testChi2Increment( edm4hep::TrackerHit* hit, double& chi2increment ) = 0 ; + virtual int testChi2Increment( edm4hep::ConstTrackerHit hit, double& chi2increment ) = 0 ; /** smooth all track states @@ -96,7 +97,7 @@ namespace MarlinTrk{ /** smooth track states from the last filtered hit back to the measurement site associated with the given hit */ - virtual int smooth( edm4hep::TrackerHit* hit ) = 0 ; + virtual int smooth( edm4hep::ConstTrackerHit hit ) = 0 ; @@ -109,21 +110,21 @@ namespace MarlinTrk{ /** get track state at measurement associated with the given hit, returning TrackState, chi2 and ndf via reference */ - virtual int getTrackState( edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; + virtual int getTrackState( edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; /** get the list of hits included in the fit, together with the chi2 contributions of the hits. * Pointers to the hits together with their chi2 contribution will be filled into a vector of * pairs consitining of the pointer as the first part of the pair and the chi2 contribution as * the second. */ - virtual int getHitsInFit( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) = 0 ; + virtual int getHitsInFit( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) = 0 ; /** get the list of hits which have been rejected by from the fit due to the a chi2 increment greater than threshold, * Pointers to the hits together with their chi2 contribution will be filled into a vector of * pairs consitining of the pointer as the first part of the pair and the chi2 contribution as * the second. */ - virtual int getOutliers( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) = 0 ; + virtual int getOutliers( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) = 0 ; /** get the current number of degrees of freedom for the fit. */ @@ -131,7 +132,7 @@ namespace MarlinTrk{ /** get TrackeHit at which fit became constrained, i.e. ndf >= 0 */ - virtual int getTrackerHitAtPositiveNDF( edm4hep::TrackerHit*& trkhit ) = 0 ; + virtual int getTrackerHitAtPositiveNDF( edm4hep::ConstTrackerHit& trkhit ) = 0 ; // PROPAGATORS @@ -143,7 +144,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to the point of closest approach to the given point, * returning TrackState, chi2 and ndf via reference */ - virtual int propagate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; + virtual int propagate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; /** propagate fit to numbered sensitive layer, returning TrackState, chi2, ndf and integer ID of the intersected sensitive detector element via reference @@ -153,7 +154,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of the intersected sensitive detector element via reference */ - virtual int propagateToLayer(int layerID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) = 0; + virtual int propagateToLayer(int layerID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) = 0; /** propagate the fit to sensitive detector element, returning TrackState, chi2 and ndf via reference */ @@ -162,7 +163,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning TrackState, chi2 and ndf via reference */ - virtual int propagateToDetElement( int detEementID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) = 0 ; + virtual int propagateToDetElement( int detEementID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) = 0 ; @@ -175,7 +176,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to the point of closest approach to the given point, * returning TrackState, chi2 and ndf via reference */ - virtual int extrapolate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; + virtual int extrapolate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) = 0 ; /** extrapolate the fit to numbered sensitive layer, returning TrackState, chi2, ndf and integer ID of the intersected sensitive detector element via reference */ @@ -184,7 +185,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of the intersected sensitive detector element via reference */ - virtual int extrapolateToLayer( int layerID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) = 0 ; + virtual int extrapolateToLayer( int layerID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) = 0 ; /** extrapolate the fit to sensitive detector element, returning TrackState, chi2 and ndf via reference */ @@ -193,7 +194,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning TrackState, chi2 and ndf via reference */ - virtual int extrapolateToDetElement( int detEementID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) = 0 ; + virtual int extrapolateToDetElement( int detEementID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) = 0 ; // INTERSECTORS @@ -206,7 +207,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning intersection point in global coordinates and integer ID of the intersected sensitive detector element via reference */ - virtual int intersectionWithLayer( int layerID, edm4hep::TrackerHit* hit, edm4hep::Vector3d& point, int& detElementID, int mode=modeClosest ) = 0 ; + virtual int intersectionWithLayer( int layerID, edm4hep::ConstTrackerHit hit, edm4hep::Vector3d& point, int& detElementID, int mode=modeClosest ) = 0 ; /** extrapolate the fit to numbered sensitive detector element, returning intersection point in global coordinates via reference @@ -216,7 +217,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning intersection point in global coordinates via reference */ - virtual int intersectionWithDetElement( int detEementID, edm4hep::TrackerHit* hit, edm4hep::Vector3d& point, int mode=modeClosest ) = 0 ; + virtual int intersectionWithDetElement( int detEementID, edm4hep::ConstTrackerHit hit, edm4hep::Vector3d& point, int mode=modeClosest ) = 0 ; protected: diff --git a/Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h.remove b/Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h similarity index 69% rename from Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h.remove rename to Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h index a697cbd304b64cc5736be59a2e3171a6f38fd24b..73e5a7c1256918ffa1eff8b2e1be9072ffaa5dc6 100644 --- a/Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h.remove +++ b/Service/TrackSystemSvc/TrackSystemSvc/LCIOTrackPropagators.h @@ -1,39 +1,32 @@ #ifndef LCIOTrackPropagators_h #define LCIOTrackPropagators_h -namespace EVENT{ - class TrackState ; -} - -namespace IMPL{ - class TrackStateImpl ; -} - +#include <edm4hep/TrackState.h> namespace LCIOTrackPropagators{ /** Propagate trackstate to a new reference point */ - int PropagateLCIOToNewRef( IMPL::TrackStateImpl& ts, double xref, double yref, double zref) ; + int PropagateLCIOToNewRef( edm4hep::TrackState& ts, double xref, double yref, double zref) ; /** Propagate trackstate to a new reference point taken as its crossing point with a cylinder of infinite length centered at x0,y0, parallel to the z axis. For direction== 0 the closest crossing point will be taken For direction== 1 the first crossing traversing in positive s will be taken For direction==-1 the first crossing traversing in negative s will be taken */ - int PropagateLCIOToCylinder( IMPL::TrackStateImpl& ts, float r, float x0, float y0, int direction=0, double epsilon=1.0e-8) ; + int PropagateLCIOToCylinder( edm4hep::TrackState& ts, float r, float x0, float y0, int direction=0, double epsilon=1.0e-8) ; /** Propagate trackstate to a new reference point taken as its crossing point with an infinite plane located at z, perpendicular to the z axis */ - int PropagateLCIOToZPlane( IMPL::TrackStateImpl& ts, float z) ; + int PropagateLCIOToZPlane( edm4hep::TrackState& ts, float z) ; /** Propagate trackstate to a new reference point taken as its crossing point with a plane parallel to the z axis, containing points x1,x2 and y1,y2. Tolerance for intersection determined by epsilon. For direction== 0 the closest crossing point will be taken For direction== 1 the first crossing traversing in positive s will be taken For direction==-1 the first crossing traversing in negative s will be taken */ - int PropagateLCIOToPlaneParralelToZ( IMPL::TrackStateImpl& ts, float x1, float y1, float x2, float y2, int direction=0, double epsilon=1.0e-8) ; + int PropagateLCIOToPlaneParralelToZ( edm4hep::TrackState& ts, float x1, float y1, float x2, float y2, int direction=0, double epsilon=1.0e-8) ; diff --git a/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkDiagnostics.h.remove b/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkDiagnostics.h.remove deleted file mode 100644 index ffa97ef3a475db11770b447d8ac9c4ab9047775a..0000000000000000000000000000000000000000 --- a/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkDiagnostics.h.remove +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef MarlinTrkDiagnostics_h -#define MarlinTrkDiagnostics_h - -//// switch to turn on diagnostics code -//#define MARLINTRK_DIAGNOSTICS_ON - -#ifdef MARLINTRK_DIAGNOSTICS_ON - -#include "lcio.h" -#include "EVENT/SimTrackerHit.h" -#include "EVENT/TrackerHit.h" - - -namespace MarlinTrk{ - - - // LCIO Extension creating a pointer to the simhit for trackerhits - struct MCTruth4HitExtStruct{ - MCTruth4HitExtStruct() : simhit(0) {} - EVENT::SimTrackerHit* simhit; - } ; - struct MCTruth4HitExt : lcio::LCOwnedExtension<MCTruth4HitExt, MCTruth4HitExtStruct> {} ; - - // fills a vector of MCParticle pointers with the MCParticles assosiated with the provided tracker hit using MCTruth4HitExtStruct - void getMCParticlesForTrackerHit(EVENT::TrackerHit* trkhit, std::vector<EVENT::MCParticle*>& mcps) ; - -} - -#endif - -#endif diff --git a/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkUtils.h b/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkUtils.h index 73826c710158625139ec872ef6c6c0fe4a7903a7..31eabb18af38f4f0253f2509912b6e5a655a18ca 100644 --- a/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkUtils.h +++ b/Service/TrackSystemSvc/TrackSystemSvc/MarlinTrkUtils.h @@ -4,6 +4,7 @@ #include <vector> #include <array> #include <cfloat> +#include <edm4hep/TrackerHitConst.h> #include <LCIOSTLTypes.h> @@ -38,7 +39,7 @@ namespace MarlinTrk{ * it @IP, @First_Hit, @Last_Hit and @CaloFace */ int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, - std::vector<edm4hep::TrackerHit*>& hit_list, + std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::Track* track, bool fit_backwards, edm4hep::TrackState* pre_fit, @@ -50,7 +51,7 @@ namespace MarlinTrk{ * it @IP, @First_Hit, @Last_Hit and @CaloFace */ int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, - std::vector<edm4hep::TrackerHit*>& hit_list, + std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::Track* track, bool fit_backwards, const std::array<float,15>& initial_cov_for_prefit, @@ -58,10 +59,10 @@ namespace MarlinTrk{ double maxChi2Increment=DBL_MAX); /** Provides the values of a track state from the first, middle and last hits in the hit_list. */ - int createPrefit( std::vector<edm4hep::TrackerHit*>& hit_list, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards ); + int createPrefit( std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards ); /** Takes a list of hits and uses the IMarlinTrack inferface to fit them using a supplied prefit containing a covariance matrix for the initialisation. */ - int createFit( std::vector<edm4hep::TrackerHit*>& hit_list, IMarlinTrack* marlinTrk, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards, double maxChi2Increment=DBL_MAX ); + int createFit( std::vector<edm4hep::ConstTrackerHit>& hit_list, IMarlinTrack* marlinTrk, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards, double maxChi2Increment=DBL_MAX ); /** Takes a fitted MarlinTrack, TrackImpl to record the fit and the hits which have been added to the fit. * The TrackImpl will have the 4 trackstates added to it @IP, @First_Hit, @Last_Hit and @CaloFace. @@ -71,15 +72,15 @@ namespace MarlinTrk{ int finaliseLCIOTrack( IMarlinTrack* marlinTrk, edm4hep::Track* track, - std::vector<edm4hep::TrackerHit*>& hit_list, + std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::TrackState* atLastHit=0, edm4hep::TrackState* atCaloFace=0); /** Set the subdetector hit numbers for the TrackImpl */ - void addHitNumbersToTrack(edm4hep::Track* track, std::vector<edm4hep::TrackerHit*>& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder); + void addHitNumbersToTrack(edm4hep::Track* track, std::vector<edm4hep::ConstTrackerHit>& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder); /** Set the subdetector hit numbers for the TrackImpl */ - void addHitNumbersToTrack(edm4hep::Track* track, std::vector<std::pair<edm4hep::TrackerHit* , double> >& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder); + void addHitNumbersToTrack(edm4hep::Track* track, std::vector<std::pair<edm4hep::ConstTrackerHit , double> >& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder); } diff --git a/Service/TrackSystemSvc/src/DiagnosticsController.cc.remove b/Service/TrackSystemSvc/src/DiagnosticsController.cc.remove deleted file mode 100644 index cbdf6b64b8119ebf24ae44ca533993fef1085f3a..0000000000000000000000000000000000000000 --- a/Service/TrackSystemSvc/src/DiagnosticsController.cc.remove +++ /dev/null @@ -1,883 +0,0 @@ - -#include "MarlinTrkDiagnostics.h" - -#ifdef MARLINTRK_DIAGNOSTICS_ON - -#include "DiagnosticsController.h" - -#define MarlinTrkNtuple_cxx -#include "MarlinTrkNtuple.h" - -#include "MarlinKalTestTrack.h" - -#include "streamlog/streamlog.h" - -#include "kaldet/ILDVTrackHit.h" -#include "kaltest/TKalTrackSite.h" -#include "kaltest/TKalTrack.h" - -#include "TFile.h" -#include "TTree.h" - -//#include "MarlinTrk/MarlinTrkNtuple.h" - -#include "HelixTrack.h" - -#include "EVENT/MCParticle.h" -#include <UTIL/BitField64.h> -#include <UTIL/ILDConf.h> - - -namespace MarlinTrk{ - - DiagnosticsController::DiagnosticsController() { - - _initialised = false; - _recording_on = false; // recording is set to off by default so that processors do not have to perform any action if they are not interested in diagnostics, i.e. no need to call init - _current_track = 0; - _currentMCP = 0; - _mcpInfoStored=false; - _skip_track = false; - _ntracks_skipped = 0; - _ntracks_written = 0; - _track_record = 0; - _tree = 0; - _root_file = 0; - - } // constructor - - DiagnosticsController::~DiagnosticsController(){ - if(_track_record) { delete _track_record; _track_record = 0; } - } - - void DiagnosticsController::init(std::string root_file_name, std::string root_tree_name, bool recording_on){ - - streamlog_out(DEBUG4) << " DiagnosticsController::init called " << "\n" - << "\t root file name = " << root_file_name << "\n" - << "\t root tree name = " << root_tree_name << "\n" - << "\t recording on = " << recording_on << "\n" - << std::endl; - - _recording_on = recording_on; - - if ( _recording_on == false ) { - _initialised = true; - return; - } - - _root_file_name = root_file_name+".root"; - _root_tree_name = root_tree_name; - - _root_file = new TFile(_root_file_name.c_str(),"RECREATE"); - - _tree = new TTree( _root_tree_name.c_str(), _root_tree_name.c_str()); - - _track_record = new MarlinTrkNtuple(); - - _track_record->CreateBranches(_tree); - - _initialised = true; - - } - - - void DiagnosticsController::skip_current_track(){ - - streamlog_out(DEBUG) << " DiagnosticsController::skip_current_track called " << std::endl; - - if ( _recording_on == false ) { - return; - } - - _skip_track = true ; - this->clear_track_record(); - } - - void DiagnosticsController::clear_track_record(){ - - streamlog_out(DEBUG) << " DiagnosticsController::clear_track_record called " << std::endl; - - if ( _recording_on == false ) { - return; - } - - _track_record->error_code = 0 ; - - _track_record->nsites = 0 ; - - _track_record->nsites_vxd = 0 ; - _track_record->nsites_sit = 0 ; - _track_record->nsites_ftd = 0 ; - _track_record->nsites_tpc = 0 ; - _track_record->nsites_set = 0 ; - - _track_record->x_mcp = 0 ; - _track_record->y_mcp = 0 ; - _track_record->z_mcp = 0 ; - - _track_record->px_mcp = 0 ; - _track_record->py_mcp = 0 ; - _track_record->pz_mcp = 0 ; - _track_record->p_mcp = 0 ; - _track_record->theta_mcp = 0 ; - _track_record->phi_mcp = 0 ; - _track_record->pdg_mcp = 0 ; - - _track_record->d0_mcp = 0 ; - _track_record->phi0_mcp = 0 ; - _track_record->omega_mcp = 0 ; - _track_record->z0_mcp = 0 ; - _track_record->tanL_mcp = 0 ; - - _track_record->ndf = 0 ; - _track_record->chi2 = 0 ; - _track_record->prob = 0 ; - - _track_record->d0_seed = 0 ; - _track_record->phi0_seed = 0 ; - _track_record->omega_seed = 0 ; - _track_record->z0_seed = 0 ; - _track_record->tanL_seed = 0 ; - - _track_record->seed_ref_point_x = 0 ; - _track_record->seed_ref_point_y = 0 ; - _track_record->seed_ref_point_z = 0 ; - - _track_record->cov_seed_d0d0 = 0 ; - _track_record->cov_seed_phi0d0 = 0 ; - _track_record->cov_seed_phi0phi0 = 0 ; - _track_record->cov_seed_kappad0 = 0 ; - _track_record->cov_seed_kappaphi0 = 0 ; - _track_record->cov_seed_kappakappa = 0 ; - _track_record->cov_seed_z0d0 = 0 ; - _track_record->cov_seed_z0phi0 = 0 ; - _track_record->cov_seed_z0kappa = 0 ; - _track_record->cov_seed_z0z0 = 0 ; - _track_record->cov_seed_tanLd0 = 0 ; - _track_record->cov_seed_tanLphi0 = 0 ; - _track_record->cov_seed_tanLkappa = 0 ; - _track_record->cov_seed_tanLz0 = 0 ; - _track_record->cov_seed_tanLtanL = 0 ; - - - _track_record->d0_ip = 0 ; - _track_record->phi0_ip = 0 ; - _track_record->omega_ip = 0 ; - _track_record->z0_ip = 0 ; - _track_record->tanL_ip = 0 ; - - _track_record->cov_ip_d0d0 = 0 ; - _track_record->cov_ip_phi0d0 = 0 ; - _track_record->cov_ip_phi0phi0 = 0 ; - _track_record->cov_ip_omegad0 = 0 ; - _track_record->cov_ip_omegaphi0 = 0 ; - _track_record->cov_ip_omegaomega = 0 ; - _track_record->cov_ip_z0d0 = 0 ; - _track_record->cov_ip_z0phi0 = 0 ; - _track_record->cov_ip_z0omega = 0 ; - _track_record->cov_ip_z0z0 = 0 ; - _track_record->cov_ip_tanLd0 = 0 ; - _track_record->cov_ip_tanLphi0 = 0 ; - _track_record->cov_ip_tanLomega = 0 ; - _track_record->cov_ip_tanLz0 = 0 ; - _track_record->cov_ip_tanLtanL = 0 ; - - for ( int i = 0 ; i<MAX_SITES; ++i) { - - _track_record->CellID0[i] = 0 ; - _track_record->rejected[i] = 0 ; - - _track_record->site_x[i] = 0 ; - _track_record->site_y[i] = 0 ; - _track_record->site_z[i] = 0 ; - - _track_record->ref_point_x[i] = 0 ; - _track_record->ref_point_y[i] = 0 ; - _track_record->ref_point_z[i] = 0 ; - - _track_record->d0_mc[i] = 0 ; - _track_record->phi0_mc[i] = 0 ; - _track_record->omega_mc[i] = 0 ; - _track_record->z0_mc[i] = 0 ; - _track_record->tanL_mc[i] = 0 ; - - _track_record->d0_predicted[i] = 0 ; - _track_record->phi0_predicted[i] = 0 ; - _track_record->omega_predicted[i] = 0 ; - _track_record->z0_predicted[i] = 0 ; - _track_record->tanL_predicted[i] = 0 ; - - _track_record->d0_filtered[i] = 0 ; - _track_record->phi0_filtered[i] = 0 ; - _track_record->omega_filtered[i] = 0 ; - _track_record->z0_filtered[i] = 0 ; - _track_record->tanL_filtered[i] = 0 ; - - _track_record->d0_smoothed[i] = 0 ; - _track_record->phi0_smoothed[i] = 0 ; - _track_record->omega_smoothed[i] = 0 ; - _track_record->z0_smoothed[i] = 0 ; - _track_record->tanL_smoothed[i] = 0 ; - - - _track_record->chi2_inc_filtered[i] = 0 ; - _track_record->chi2_inc_smoothed[i] = 0 ; - _track_record->dim[i] = 0 ; - - _track_record->cov_predicted_d0d0[i] = 0 ; - _track_record->cov_predicted_phi0d0[i] = 0 ; - _track_record->cov_predicted_phi0phi0[i] = 0 ; - _track_record->cov_predicted_omegad0[i] = 0 ; - _track_record->cov_predicted_omegaphi0[i] = 0 ; - _track_record->cov_predicted_omegaomega[i] = 0 ; - _track_record->cov_predicted_z0d0[i] = 0 ; - _track_record->cov_predicted_z0phi0[i] = 0 ; - _track_record->cov_predicted_z0omega[i] = 0 ; - _track_record->cov_predicted_z0z0[i] = 0 ; - _track_record->cov_predicted_tanLd0[i] = 0 ; - _track_record->cov_predicted_tanLphi0[i] = 0 ; - _track_record->cov_predicted_tanLomega[i] = 0 ; - _track_record->cov_predicted_tanLz0[i] = 0 ; - _track_record->cov_predicted_tanLtanL[i] = 0 ; - - _track_record->cov_filtered_d0d0[i] = 0 ; - _track_record->cov_filtered_phi0d0[i] = 0 ; - _track_record->cov_filtered_phi0phi0[i] = 0 ; - _track_record->cov_filtered_omegad0[i] = 0 ; - _track_record->cov_filtered_omegaphi0[i] = 0 ; - _track_record->cov_filtered_omegaomega[i] = 0 ; - _track_record->cov_filtered_z0d0[i] = 0 ; - _track_record->cov_filtered_z0phi0[i] = 0 ; - _track_record->cov_filtered_z0omega[i] = 0 ; - _track_record->cov_filtered_z0z0[i] = 0 ; - _track_record->cov_filtered_tanLd0[i] = 0 ; - _track_record->cov_filtered_tanLphi0[i] = 0 ; - _track_record->cov_filtered_tanLomega[i] = 0 ; - _track_record->cov_filtered_tanLz0[i] = 0 ; - _track_record->cov_filtered_tanLtanL[i] = 0 ; - - _track_record->cov_smoothed_d0d0[i] = 0 ; - _track_record->cov_smoothed_phi0d0[i] = 0 ; - _track_record->cov_smoothed_phi0phi0[i] = 0 ; - _track_record->cov_smoothed_omegad0[i] = 0 ; - _track_record->cov_smoothed_omegaphi0[i] = 0 ; - _track_record->cov_smoothed_omegaomega[i] = 0 ; - _track_record->cov_smoothed_z0d0[i] = 0 ; - _track_record->cov_smoothed_z0phi0[i] = 0 ; - _track_record->cov_smoothed_z0omega[i] = 0 ; - _track_record->cov_smoothed_z0z0[i] = 0 ; - _track_record->cov_smoothed_tanLd0[i] = 0 ; - _track_record->cov_smoothed_tanLphi0[i] = 0 ; - _track_record->cov_smoothed_tanLomega[i] = 0 ; - _track_record->cov_smoothed_tanLz0[i] = 0 ; - _track_record->cov_smoothed_tanLtanL[i] = 0 ; - - - - } - - } - - void DiagnosticsController::new_track(MarlinKalTestTrack* trk){ - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::new_track: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - streamlog_out(DEBUG3) << " DiagnosticsController::new_track called " << std::endl; - - this->clear_track_record(); - - _current_track = trk; - - _skip_track = false; - _currentMCP = 0; - _mcpInfoStored=false; - - } - - - - void DiagnosticsController::set_intial_track_parameters(double d0, double phi0, double omega, double z0, double tanL, double pivot_x, double pivot_y, double pivot_z, TKalMatrix& cov){ - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::set_intial_track_parameters: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - streamlog_out(DEBUG3) << " DiagnosticsController::set_intial_track_parameters called " << std::endl; - - _track_record->d0_seed= d0; - _track_record->phi0_seed= phi0; - _track_record->omega_seed= omega; - _track_record->z0_seed= z0; - _track_record->tanL_seed= tanL; - - _track_record->seed_ref_point_x = pivot_x ; - _track_record->seed_ref_point_y = pivot_y ; - _track_record->seed_ref_point_z = pivot_z ; - - - _track_record->cov_seed_d0d0 = cov( 0 , 0 ) ; - _track_record->cov_seed_phi0d0 = cov( 1 , 0 ) ; - _track_record->cov_seed_phi0phi0 = cov( 1 , 1 ) ; - _track_record->cov_seed_kappad0 = cov( 2 , 0 ) ; - _track_record->cov_seed_kappaphi0 = cov( 2 , 1 ) ; - _track_record->cov_seed_kappakappa = cov( 2 , 2 ) ; - _track_record->cov_seed_z0d0 = cov( 3 , 0 ) ; - _track_record->cov_seed_z0phi0 = cov( 3 , 1 ) ; - _track_record->cov_seed_z0kappa = cov( 3 , 2 ) ; - _track_record->cov_seed_z0z0 = cov( 3 , 3 ) ; - _track_record->cov_seed_tanLd0 = cov( 4 , 0 ) ; - _track_record->cov_seed_tanLphi0 = cov( 4 , 1 ) ; - _track_record->cov_seed_tanLkappa = cov( 4 , 2 ) ; - _track_record->cov_seed_tanLz0 = cov( 4 , 3 ) ; - _track_record->cov_seed_tanLtanL = cov( 4 , 4 ) ; - - // cov.Print(); - - - streamlog_out(DEBUG3) << " $#$#$# Initial Track Parameters: " - << "d0 = " << d0 << " " << "[+/-" << sqrt( _track_record->cov_seed_d0d0 ) << "] " - << "phi0 = " << phi0 << " " << "[+/-" << sqrt( _track_record->cov_seed_phi0phi0 ) << "] " - << "omega = " << omega << " " << "[+/-" << sqrt( _track_record->cov_seed_kappakappa ) << "] " - << "z0 = " << z0 << " " << "[+/-" << sqrt( _track_record->cov_seed_z0z0 ) << "] " - << "tanL = " << tanL << " " << "[+/-" << sqrt( _track_record->cov_seed_tanLtanL ) << "] " - << "ref = " << pivot_x << " " << pivot_y << " " << pivot_z << " " - << std::endl; - - } - - - void DiagnosticsController::record_rejected_site(ILDVTrackHit* hit, TKalTrackSite* site){ - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::record_rejected_site: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - - if(_skip_track) return; - - _track_record->rejected[_track_record->nsites] = 1; - _track_record->CellID0[_track_record->nsites] = hit->getLCIOTrackerHit()->getCellID0(); - - - EVENT::MCParticle* mcp = hit->getLCIOTrackerHit()->ext<MarlinTrk::MCTruth4HitExt>()->simhit->getMCParticle(); - - ++_track_record->nsites; - streamlog_out(DEBUG2) << "record_rejected_site _track_record->nsites = " << _track_record->nsites << " MCParticle of simhit = " << mcp << " pdg " << mcp->getPDG() << " energy = " << mcp->getEnergy() << " id = " << mcp->id() << std::endl; - - } - - - void DiagnosticsController::record_site(ILDVTrackHit* hit, TKalTrackSite* site){ - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::record_site: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - streamlog_out(DEBUG2) << "DiagnosticsController::record_site called " << std::endl; - - if(_skip_track) return; - - EVENT::TrackerHit* trkhit = hit->getLCIOTrackerHit(); - - MarlinTrk::MCTruth4HitExtStruct* ext = trkhit->ext<MarlinTrk::MCTruth4HitExt>(); - - if ( ! ext ) { - - streamlog_out(ERROR) << "MCTruth4HitExt not attached to TrackerHit use processor SetTrackerHitExtensions to set them: exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - - } - - EVENT::SimTrackerHit* simhit = trkhit->ext<MarlinTrk::MCTruth4HitExt>()->simhit; - - if ( ! simhit ) { - - streamlog_out(ERROR) << "SimTrackerHit not attached to TrackerHit using MCTruth4HitExt use processor SetTrackerHitExtensions to set them: exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - - } - - EVENT::MCParticle* mcp = simhit->getMCParticle() ; - - - if( _track_record->nsites >= 0 ){ - - if ( _mcpInfoStored == false ) { - - streamlog_out(DEBUG2) << "DiagnosticsController::record_site store MCParticle parameters for " << mcp << " pdg " << mcp->getPDG() << " energy = " << mcp->getEnergy() << " id = " << mcp->id() << std::endl; - - _currentMCP = mcp; - - _track_record->x_mcp = mcp->getVertex()[0]; - _track_record->y_mcp = mcp->getVertex()[1]; - _track_record->z_mcp = mcp->getVertex()[2]; - - _track_record->px_mcp = mcp->getMomentum()[0]; - _track_record->py_mcp = mcp->getMomentum()[1]; - _track_record->pz_mcp = mcp->getMomentum()[2]; - - double pt = sqrt(_track_record->px_mcp*_track_record->px_mcp + - _track_record->py_mcp*_track_record->py_mcp ) ; - - _track_record->p_mcp = sqrt( pt*pt + _track_record->pz_mcp*_track_record->pz_mcp ); - - - _track_record->theta_mcp = atan2( pt, _track_record->pz_mcp ); - _track_record->phi_mcp = atan2( _track_record->py_mcp, _track_record->px_mcp ); - - _track_record->pdg_mcp = mcp->getPDG(); - - // HelixTrack helixMC( sim_pos, sim_mom, mcp->getCharge(), ml.GetBz() ) ; - HelixTrack helixMC( mcp->getVertex(), mcp->getMomentum(), mcp->getCharge(), site->GetBfield() ) ; - - helixMC.moveRefPoint(0.0, 0.0, 0.0); - - _track_record->d0_mcp= helixMC.getD0(); - _track_record->phi0_mcp = helixMC.getPhi0(); - _track_record->omega_mcp = helixMC.getOmega(); - _track_record->z0_mcp = helixMC.getZ0(); - _track_record->tanL_mcp = helixMC.getTanLambda(); - - _mcpInfoStored = true; - - } - else if( _currentMCP != mcp ) { - _skip_track = true ; // do not store tracks formed from more than one MCParticle - streamlog_out(WARNING) << "DiagnosticsController::record_site: Track skipped. Not storing tracks formed from more than one MCParticle " << std::endl; - return ; - } - - double sim_pos[3]; - sim_pos[0] = simhit->getPosition()[0]; - sim_pos[1] = simhit->getPosition()[1]; - sim_pos[2] = simhit->getPosition()[2]; - - double sim_mom[3]; - sim_mom[0] = simhit->getMomentum()[0]; - sim_mom[1] = simhit->getMomentum()[1]; - sim_mom[2] = simhit->getMomentum()[2]; - - if ( fabs(sim_mom[0]) < 1.e-09 && fabs(sim_mom[1]) < 1.e-09 && fabs(sim_mom[2]) < 1.e-09 ) { - // then the momentum is sub eV and therefore the momentum was certainly not set - streamlog_out(ERROR) << "Momentum not set in SimTrackerHit exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - - } - - - _track_record->CellID0[_track_record->nsites] = trkhit->getCellID0() ; - - UTIL::BitField64 encoder(lcio::ILDCellID0::encoder_string); - encoder.setValue( trkhit->getCellID0() ); - - if (encoder[lcio::ILDCellID0::subdet] == lcio::ILDDetID::VXD) { - ++_track_record->nsites_vxd; - } - else if (encoder[lcio::ILDCellID0::subdet] == lcio::ILDDetID::SIT) { - ++_track_record->nsites_sit; - } - else if (encoder[lcio::ILDCellID0::subdet] == lcio::ILDDetID::FTD) { - ++_track_record->nsites_ftd; - } - else if (encoder[lcio::ILDCellID0::subdet] == lcio::ILDDetID::TPC) { - ++_track_record->nsites_tpc; - } - else if (encoder[lcio::ILDCellID0::subdet] == lcio::ILDDetID::SET) { - ++_track_record->nsites_set; - } - - _track_record->chi2_inc_filtered[_track_record->nsites] = site->GetDeltaChi2(); - _track_record->dim[_track_record->nsites] = site->GetDimension(); - - // create helix from MCTruth at sim hit - // HelixTrack helixMC( sim_pos, sim_mom, mcp->getCharge(), ml.GetBz() ) ; - HelixTrack helixMC( sim_pos, sim_mom, mcp->getCharge(), site->GetBfield() ) ; - - // here perhaps we should move the helix to the hit to calculate the deltas or though this could still be done in the analysis code, as both sim and rec hit positions are stored ? - // helixMC.moveRefPoint(0.0, 0.0, 0.0); - - streamlog_out(DEBUG2) << " $#$#$# SimHit Track Parameters: " - << "x = " << sim_pos[0] << " " - << "y = " << sim_pos[1] << " " - << "z = " << sim_pos[2] << " " - << "px = " << sim_mom[0] << " " - << "py = " << sim_mom[1] << " " - << "pz = " << sim_mom[2] << " " - << "p = " << sqrt(sim_mom[0]*sim_mom[0] + sim_mom[1]*sim_mom[1] + sim_mom[2]*sim_mom[2]) << " " - << "d0 = " << helixMC.getD0() << " " - << "phi0 = " << helixMC.getPhi0() << " " - << "omega = " << helixMC.getOmega() << " " - << "z0 = " << helixMC.getZ0() << " " - << "tanL = " << helixMC.getTanLambda() << " " - << " mcp ID = " << simhit->getMCParticle()->id() - << std::endl; - - _track_record->d0_mc[_track_record->nsites] = helixMC.getD0(); - _track_record->phi0_mc[_track_record->nsites] = helixMC.getPhi0(); - _track_record->omega_mc[_track_record->nsites] = helixMC.getOmega(); - _track_record->z0_mc[_track_record->nsites] = helixMC.getZ0(); - _track_record->tanL_mc[_track_record->nsites] = helixMC.getTanLambda(); - - double rec_x = trkhit->getPosition()[0]; - double rec_y = trkhit->getPosition()[1]; - double rec_z = trkhit->getPosition()[2]; - - _track_record->site_x[_track_record->nsites] = rec_x; - _track_record->site_y[_track_record->nsites] = rec_y; - _track_record->site_z[_track_record->nsites] = rec_z; - - -// // move track state to the sim hit for comparison - const TVector3 tpoint( sim_pos[0], sim_pos[1], sim_pos[2] ) ; - - // move track state to the IP to make all comparisons straight forward - // const TVector3 tpoint( 0.0, 0.0, 0.0 ) ; - - - IMPL::TrackStateImpl ts; - int ndf; - double chi2; - double dPhi ; - - - TKalTrackState& trkState_predicted = (TKalTrackState&) site->GetState(TVKalSite::kPredicted); // this segfaults if no hits are present - - THelicalTrack helix_predicted = trkState_predicted.GetHelix() ; - TMatrixD c0_predicted(trkState_predicted.GetCovMat()); - - Int_t sdim = trkState_predicted.GetDimension(); // dimensions of the track state, it will be 5 or 6 - - // now move to the point - TKalMatrix DF(sdim,sdim); - DF.UnitMatrix(); - helix_predicted.MoveTo( tpoint , dPhi , &DF , &c0_predicted) ; // move helix to desired point, and get propagator matrix - - streamlog_out(DEBUG2) << "DiagnosticsController::record_site get PREDICTED trackstate " << std::endl; - - _current_track->ToLCIOTrackState( helix_predicted, c0_predicted, ts, chi2, ndf ); - - _track_record->d0_predicted[_track_record->nsites] = ts.getD0() ; - _track_record->phi0_predicted[_track_record->nsites] = ts.getPhi() ; - _track_record->omega_predicted[_track_record->nsites] = ts.getOmega() ; - _track_record->z0_predicted[_track_record->nsites] = ts.getZ0() ; - _track_record->tanL_predicted[_track_record->nsites] = ts.getTanLambda() ; - - - _track_record->cov_predicted_d0d0[_track_record->nsites] = ts.getCovMatrix()[0]; - _track_record->cov_predicted_phi0d0[_track_record->nsites] = ts.getCovMatrix()[1]; - _track_record->cov_predicted_phi0phi0[_track_record->nsites] = ts.getCovMatrix()[2]; - _track_record->cov_predicted_omegad0[_track_record->nsites] = ts.getCovMatrix()[3]; - _track_record->cov_predicted_omegaphi0[_track_record->nsites] = ts.getCovMatrix()[4]; - _track_record->cov_predicted_omegaomega[_track_record->nsites] = ts.getCovMatrix()[5]; - _track_record->cov_predicted_z0d0[_track_record->nsites] = ts.getCovMatrix()[6]; - _track_record->cov_predicted_z0phi0[_track_record->nsites] = ts.getCovMatrix()[7]; - _track_record->cov_predicted_z0omega[_track_record->nsites] = ts.getCovMatrix()[8]; - _track_record->cov_predicted_z0z0[_track_record->nsites] = ts.getCovMatrix()[9]; - _track_record->cov_predicted_tanLd0[_track_record->nsites] = ts.getCovMatrix()[10]; - _track_record->cov_predicted_tanLphi0[_track_record->nsites] = ts.getCovMatrix()[11]; - _track_record->cov_predicted_tanLomega[_track_record->nsites] = ts.getCovMatrix()[12]; - _track_record->cov_predicted_tanLz0[_track_record->nsites] = ts.getCovMatrix()[13]; - _track_record->cov_predicted_tanLtanL[_track_record->nsites] = ts.getCovMatrix()[14]; - - - streamlog_out(DEBUG2) << "DiagnosticsController::record_site get FILTERED trackstate " << std::endl; - - TKalTrackState& trkState_filtered = (TKalTrackState&) site->GetState(TVKalSite::kFiltered); // this segfaults if no hits are present - - THelicalTrack helix_filtered = trkState_filtered.GetHelix() ; - TMatrixD c0_filtered(trkState_filtered.GetCovMat()); - - DF.UnitMatrix(); - helix_filtered.MoveTo( tpoint , dPhi , &DF , &c0_filtered) ; // move helix to desired point, and get propagator matrix - - IMPL::TrackStateImpl ts_f; - - _current_track->ToLCIOTrackState( helix_filtered, c0_filtered, ts_f, chi2, ndf ); - - _track_record->d0_filtered[_track_record->nsites] = ts_f.getD0() ; - _track_record->phi0_filtered[_track_record->nsites] = ts_f.getPhi() ; - _track_record->omega_filtered[_track_record->nsites] = ts_f.getOmega() ; - _track_record->z0_filtered[_track_record->nsites] = ts_f.getZ0() ; - _track_record->tanL_filtered[_track_record->nsites] = ts_f.getTanLambda() ; - - - _track_record->cov_filtered_d0d0[_track_record->nsites] = ts_f.getCovMatrix()[0]; - _track_record->cov_filtered_phi0d0[_track_record->nsites] = ts_f.getCovMatrix()[1]; - _track_record->cov_filtered_phi0phi0[_track_record->nsites] = ts_f.getCovMatrix()[2]; - _track_record->cov_filtered_omegad0[_track_record->nsites] = ts_f.getCovMatrix()[3]; - _track_record->cov_filtered_omegaphi0[_track_record->nsites] = ts_f.getCovMatrix()[4]; - _track_record->cov_filtered_omegaomega[_track_record->nsites] = ts_f.getCovMatrix()[5]; - _track_record->cov_filtered_z0d0[_track_record->nsites] = ts_f.getCovMatrix()[6]; - _track_record->cov_filtered_z0phi0[_track_record->nsites] = ts_f.getCovMatrix()[7]; - _track_record->cov_filtered_z0omega[_track_record->nsites] = ts_f.getCovMatrix()[8]; - _track_record->cov_filtered_z0z0[_track_record->nsites] = ts_f.getCovMatrix()[9]; - _track_record->cov_filtered_tanLd0[_track_record->nsites] = ts_f.getCovMatrix()[10]; - _track_record->cov_filtered_tanLphi0[_track_record->nsites] = ts_f.getCovMatrix()[11]; - _track_record->cov_filtered_tanLomega[_track_record->nsites] = ts_f.getCovMatrix()[12]; - _track_record->cov_filtered_tanLz0[_track_record->nsites] = ts_f.getCovMatrix()[13]; - _track_record->cov_filtered_tanLtanL[_track_record->nsites] = ts_f.getCovMatrix()[14]; - - - - _track_record->ref_point_x[_track_record->nsites] = tpoint.X(); - _track_record->ref_point_y[_track_record->nsites] = tpoint.Y(); - _track_record->ref_point_z[_track_record->nsites] = tpoint.Z(); - - - } - - ++_track_record->nsites; - - if (_track_record->nsites > MAX_SITES) { - _skip_track = true ; - this->clear_track_record(); - streamlog_out(DEBUG4) << " DiagnosticsController::end_track: Number of site too large. Track Skipped. nsites = " << _track_record->nsites << " : maximum number of site allowed = " << MAX_SITES << std::endl; - return; - } - - - streamlog_out(DEBUG2) << "_track_record->nsites = " << _track_record->nsites << std::endl; - } - - void DiagnosticsController::end_track(){ - - - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::end_track: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - streamlog_out(DEBUG3) << " DiagnosticsController::end_track called " << std::endl; - - if ( _skip_track ) { // just clear the track buffers and return. - ++_ntracks_skipped; - this->clear_track_record(); - return; - } else { - - _track_record->chi2 = _current_track->_kaltrack->GetChi2(); - _track_record->ndf = _current_track->_kaltrack->GetNDF(); - _track_record->prob = TMath::Prob(_track_record->chi2, _track_record->ndf); - - TIter it(_current_track->_kaltrack,kIterForward); - - Int_t nsites = _current_track->_kaltrack->GetEntries(); - - if (nsites > MAX_SITES) { - _skip_track = true ; - ++_ntracks_skipped; - this->clear_track_record(); - streamlog_out(DEBUG4) << " DiagnosticsController::end_track: Number of site too large. Track Skipped. nsites = " << nsites << " : maximum number of site allowed = " << MAX_SITES << std::endl; - return; - } - - - if( _current_track->_smoothed ){ - - for (Int_t isite=1; isite<nsites; isite++) { - - UTIL::BitField64 encoder(lcio::ILDCellID0::encoder_string); - encoder.setValue( _track_record->CellID0[isite] ); - - - TVKalSite* site = static_cast<TVKalSite *>( _current_track->_kaltrack->At(isite)); - - if ( _track_record->rejected[isite] == 0 && encoder[lcio::ILDCellID0::subdet] != 0 ) { - - - _track_record->chi2_inc_smoothed[isite] = site->GetDeltaChi2(); - - TKalTrackState& trkState_smoothed = (TKalTrackState&) site->GetState(TVKalSite::kSmoothed); // this segfaults if no hits are present - - THelicalTrack helix_smoothed = trkState_smoothed.GetHelix() ; - TMatrixD c0_smoothed(trkState_smoothed.GetCovMat()); - - Int_t sdim = trkState_smoothed.GetDimension(); // dimensions of the track state, it will be 5 or 6 - - // move track state to the sim hit for comparison - const TVector3 tpoint( _track_record->ref_point_x[isite], _track_record->ref_point_y[isite], _track_record->ref_point_z[isite] ) ; - - // now move to the point - TKalMatrix DF(sdim,sdim); - DF.UnitMatrix(); - - double dPhi=0; - - helix_smoothed.MoveTo( tpoint , dPhi , &DF , &c0_smoothed) ; // move helix to desired point, and get propagator matrix - - IMPL::TrackStateImpl ts; - int ndf; - double chi2; - - _current_track->ToLCIOTrackState( helix_smoothed, c0_smoothed, ts, chi2, ndf ); - - - _track_record->d0_smoothed[isite] = ts.getD0() ; - _track_record->phi0_smoothed[isite] = ts.getPhi() ; - _track_record->omega_smoothed[isite] = ts.getOmega() ; - _track_record->z0_smoothed[isite] = ts.getZ0() ; - _track_record->tanL_smoothed[isite] = ts.getTanLambda() ; - - - _track_record->cov_smoothed_d0d0[isite] = ts.getCovMatrix()[0]; - _track_record->cov_smoothed_phi0d0[isite] = ts.getCovMatrix()[1]; - _track_record->cov_smoothed_phi0phi0[isite] = ts.getCovMatrix()[2]; - _track_record->cov_smoothed_omegad0[isite] = ts.getCovMatrix()[3]; - _track_record->cov_smoothed_omegaphi0[isite] = ts.getCovMatrix()[4]; - _track_record->cov_smoothed_omegaomega[isite] = ts.getCovMatrix()[5]; - _track_record->cov_smoothed_z0d0[isite] = ts.getCovMatrix()[6]; - _track_record->cov_smoothed_z0phi0[isite] = ts.getCovMatrix()[7]; - _track_record->cov_smoothed_z0omega[isite] = ts.getCovMatrix()[8]; - _track_record->cov_smoothed_z0z0[isite] = ts.getCovMatrix()[9]; - _track_record->cov_smoothed_tanLd0[isite] = ts.getCovMatrix()[10]; - _track_record->cov_smoothed_tanLphi0[isite] = ts.getCovMatrix()[11]; - _track_record->cov_smoothed_tanLomega[isite] = ts.getCovMatrix()[12]; - _track_record->cov_smoothed_tanLz0[isite] = ts.getCovMatrix()[13]; - _track_record->cov_smoothed_tanLtanL[isite] = ts.getCovMatrix()[14]; - - } - - } - } - - IMPL::TrackStateImpl ts_at_ip; - int ndf; - double chi2; - - gear::Vector3D point(0.0,0.0,0.0); - _current_track->propagate( point, ts_at_ip, chi2, ndf ); - - _track_record->d0_ip = ts_at_ip.getD0() ; - _track_record->phi0_ip = ts_at_ip.getPhi() ; - _track_record->omega_ip = ts_at_ip.getOmega() ; - _track_record->z0_ip = ts_at_ip.getZ0() ; - _track_record->tanL_ip = ts_at_ip.getTanLambda() ; - - - _track_record->cov_ip_d0d0 = ts_at_ip.getCovMatrix()[0]; - _track_record->cov_ip_phi0d0 = ts_at_ip.getCovMatrix()[1]; - _track_record->cov_ip_phi0phi0 = ts_at_ip.getCovMatrix()[2]; - _track_record->cov_ip_omegad0 = ts_at_ip.getCovMatrix()[3]; - _track_record->cov_ip_omegaphi0 = ts_at_ip.getCovMatrix()[4]; - _track_record->cov_ip_omegaomega = ts_at_ip.getCovMatrix()[5]; - _track_record->cov_ip_z0d0 = ts_at_ip.getCovMatrix()[6]; - _track_record->cov_ip_z0phi0 = ts_at_ip.getCovMatrix()[7]; - _track_record->cov_ip_z0omega = ts_at_ip.getCovMatrix()[8]; - _track_record->cov_ip_z0z0 = ts_at_ip.getCovMatrix()[9]; - _track_record->cov_ip_tanLd0 = ts_at_ip.getCovMatrix()[10]; - _track_record->cov_ip_tanLphi0 = ts_at_ip.getCovMatrix()[11]; - _track_record->cov_ip_tanLomega = ts_at_ip.getCovMatrix()[12]; - _track_record->cov_ip_tanLz0 = ts_at_ip.getCovMatrix()[13]; - _track_record->cov_ip_tanLtanL = ts_at_ip.getCovMatrix()[14]; - - _tree->Fill(); - - ++_ntracks_written; - - } - - } - - void DiagnosticsController::end(){ - - if ( _recording_on == false ) { - return; - } - - if ( _initialised == false ){ - streamlog_out(ERROR) << "DiagnosticsController::end: Diagnostics not initialised call init(std::string root_file_name, std::string root_tree_name, bool recording_off) first : exit(1) called from file " - << __FILE__ - << " line " - << __LINE__ - << std::endl; - - exit(1); - } - - streamlog_out(DEBUG4) << " DiagnosticsController::end() called \n" - << "\t number of tracks written = " << _ntracks_written - << "\t number of tracks skipped = " << _ntracks_skipped - << std::endl; - - - - // _tree->Print(); - _root_file->Write(); - _root_file->Close(); - delete _root_file; _root_file = 0; - - } - - -} - - - -#endif diff --git a/Service/TrackSystemSvc/src/DiagnosticsController.h.remove b/Service/TrackSystemSvc/src/DiagnosticsController.h.remove deleted file mode 100644 index 2e42d0c37ba964a5d11aea60a5d21cce92de73e7..0000000000000000000000000000000000000000 --- a/Service/TrackSystemSvc/src/DiagnosticsController.h.remove +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef DiagnosticsController_h -#define DiagnosticsController_h - -#include "MarlinTrk/MarlinTrkDiagnostics.h" - -#ifdef MARLINTRK_DIAGNOSTICS_ON - -class TFile; -class TH1F; -class TTree; -class TKalMatrix; - -namespace EVENT { - class MCParticle; -} - -class ILDVTrackHit; -class TKalTrackSite; -class MarlinTrkNtuple; - -namespace MarlinTrk{ - - class MarlinKalTestTrack; - class IMarlinTrack; - - - class DiagnosticsController { - - public: - - /** constructor */ - DiagnosticsController(); - - /** Destructor */ - virtual ~DiagnosticsController(); - - - void init(std::string root_file_name, std::string root_Tree_name, bool _recording_on=true ) ; - - void new_track(MarlinKalTestTrack* trk) ; - - void set_intial_track_parameters(double d0, double phi0, double omega, double z0, double tanL, double pivot_x, double pivot_y, double pivot_z, TKalMatrix& cov); - - void record_site(ILDVTrackHit* hit, TKalTrackSite* site); - - void record_rejected_site(ILDVTrackHit* hit, TKalTrackSite* site); - - void skip_current_track(); - - void end_track() ; - - void end(); - - - private: - - DiagnosticsController(const DiagnosticsController&) ; // Prevent copy-construction - DiagnosticsController& operator=(const DiagnosticsController&) ; // Prevent assignment - - void clear_track_record(); - - bool _initialised; - bool _recording_on; - - int _ntracks_written; - int _ntracks_skipped; - - std::string _root_file_name; - std::string _root_tree_name; - - TFile* _root_file; - TTree* _tree; - MarlinTrkNtuple* _track_record; - - MarlinKalTestTrack* _current_track; - - EVENT::MCParticle* _currentMCP; - - bool _mcpInfoStored; - bool _skip_track; - - - }; - - -} - -#endif - -#endif diff --git a/Service/TrackSystemSvc/src/LCIOTrackPropagators.cc.remove b/Service/TrackSystemSvc/src/LCIOTrackPropagators.cc similarity index 87% rename from Service/TrackSystemSvc/src/LCIOTrackPropagators.cc.remove rename to Service/TrackSystemSvc/src/LCIOTrackPropagators.cc index 19a4f650b0dd37e9a278d1389eca463fc9ff604f..22fb8665f77fe8dfb162997685f86224514d2218 100644 --- a/Service/TrackSystemSvc/src/LCIOTrackPropagators.cc.remove +++ b/Service/TrackSystemSvc/src/LCIOTrackPropagators.cc @@ -1,10 +1,10 @@ -#include "LCIOTrackPropagators.h" +#include "TrackSystemSvc/LCIOTrackPropagators.h" #include <cmath> #include <iostream> -#include "IMPL/TrackStateImpl.h" +#include "edm4hep/TrackState.h" #include "CLHEP/Matrix/Matrix.h" #include "CLHEP/Matrix/SymMatrix.h" @@ -15,20 +15,20 @@ namespace LCIOTrackPropagators{ - int PropagateLCIOToNewRef( IMPL::TrackStateImpl& ts, double xref, double yref, double zref ) { + int PropagateLCIOToNewRef( edm4hep::TrackState& ts, double xref, double yref, double zref ) { // std::cout << "PropagateLCIOToNewRef: x:y:z = " << xref << " : " << yref << " : " << zref << std::endl ; // Convert Parameters - const double d0 = ts.getD0() ; - const double phi0 = ts.getPhi() ; - const double omega = ts.getOmega() ; - const double z0 = ts.getZ0() ; - const double tanL = ts.getTanLambda() ; + const double d0 = ts.D0 ; + const double phi0 = ts.phi ; + const double omega = ts.omega ; + const double z0 = ts.Z0 ; + const double tanL = ts.tanLambda ; // const double charge = omega/fabs(omega) ; - const float* ref = ts.getReferencePoint() ; + edm4hep::Vector3f ref = ts.referencePoint ; const double radius = 1.0/omega ; @@ -65,7 +65,7 @@ namespace LCIOTrackPropagators{ for(int jcol=0; jcol<irow+1; ++jcol){ // std::cout << "row = " << irow << " col = " << jcol << std::endl ; // std::cout << "cov["<< icov << "] = " << _cov[icov] << std::endl ; - cov0[irow][jcol] = ts.getCovMatrix()[icov] ; + cov0[irow][jcol] = ts.covMatrix[icov] ; ++icov ; } } @@ -100,7 +100,7 @@ namespace LCIOTrackPropagators{ CLHEP::HepSymMatrix covPrime = cov0.similarity(propagatorMatrix); - EVENT::FloatVec cov( 15 ) ; + std::array<float,15> cov; icov = 0 ; @@ -116,11 +116,11 @@ namespace LCIOTrackPropagators{ while ( phi0Prime < -M_PI ) phi0Prime += 2.0*M_PI ; while ( phi0Prime >= M_PI ) phi0Prime -= 2.0*M_PI ; - ts.setD0( d0Prime ) ; - ts.setPhi( phi0Prime ) ; - ts.setOmega( omega ) ; - ts.setZ0( z0Prime ) ; - ts.setTanLambda( tanL ) ; + ts.D0 = d0Prime; + ts.phi = phi0Prime ; + ts.omega = omega; + ts.Z0 = z0Prime ; + ts.tanLambda = tanL; float refPointPrime[3] ; @@ -128,9 +128,9 @@ namespace LCIOTrackPropagators{ refPointPrime[1] = yref ; refPointPrime[2] = zref ; - ts.setReferencePoint(refPointPrime) ; + ts.referencePoint = refPointPrime; - ts.setCovMatrix( cov ) ; + ts.covMatrix = cov; return 0 ; @@ -142,22 +142,22 @@ namespace LCIOTrackPropagators{ // For direction== 1 the first crossing traversing in positive s will be taken // For direction==-1 the first crossing traversing in negative s will be taken - int PropagateLCIOToCylinder( IMPL::TrackStateImpl& ts, float r0, float x0, float y0, int direction, double epsilon){ + int PropagateLCIOToCylinder( edm4hep::TrackState& ts, float r0, float x0, float y0, int direction, double epsilon){ // taken from http://paulbourke.net/geometry/2circle/tvoght.c // std::cout << "PropagateLCIOToCylinder: r = " << r0 << " x0:y0 = " << x0 << " : " << y0 << " direction = " << direction << std::endl ; - const double x_ref = ts.getReferencePoint()[0] ; - const double y_ref = ts.getReferencePoint()[1] ; - const double z_ref = ts.getReferencePoint()[2] ; + const double x_ref = ts.referencePoint[0] ; + const double y_ref = ts.referencePoint[1] ; + const double z_ref = ts.referencePoint[2] ; - const double d0 = ts.getD0() ; - const double z0 = ts.getZ0() ; - const double phi0 = ts.getPhi() ; - const double tanl = ts.getTanLambda() ; - const double omega = ts.getOmega() ; + const double d0 = ts.D0 ; + const double z0 = ts.Z0 ; + const double phi0 = ts.phi ; + const double tanl = ts.tanLambda ; + const double omega = ts.omega ; const double rho = 1.0 / omega ; const double x_pca = x_ref - d0 * sin(phi0) ; @@ -305,18 +305,18 @@ namespace LCIOTrackPropagators{ } - int PropagateLCIOToZPlane( IMPL::TrackStateImpl& ts, float z) { + int PropagateLCIOToZPlane( edm4hep::TrackState& ts, float z) { - const double x_ref = ts.getReferencePoint()[0] ; - const double y_ref = ts.getReferencePoint()[1] ; - const double z_ref = ts.getReferencePoint()[2] ; + const double x_ref = ts.referencePoint[0] ; + const double y_ref = ts.referencePoint[1] ; + const double z_ref = ts.referencePoint[2] ; - const double d0 = ts.getD0() ; - const double z0 = ts.getZ0() ; - const double phi0 = ts.getPhi() ; - const double tanl = ts.getTanLambda() ; - const double omega = ts.getOmega() ; + const double d0 = ts.D0 ; + const double z0 = ts.Z0 ; + const double phi0 = ts.phi ; + const double tanl = ts.tanLambda ; + const double omega = ts.omega ; const double x_pca = x_ref - d0 * sin(phi0) ; const double y_pca = y_ref + d0 * cos(phi0) ; @@ -340,22 +340,22 @@ namespace LCIOTrackPropagators{ // For direction == 0 the closest crossing point will be taken // For direction == 1 the first crossing traversing in positive s will be taken // For direction == -1 the first crossing traversing in negative s will be taken - int PropagateLCIOToPlaneParralelToZ( IMPL::TrackStateImpl& ts, float x1, float y1, float x2, float y2, int direction, double epsilon) { + int PropagateLCIOToPlaneParralelToZ( edm4hep::TrackState& ts, float x1, float y1, float x2, float y2, int direction, double epsilon) { // check that direction has one of the correct values if( !( direction == 0 || direction == 1 || direction == -1) ) return -1 ; // taken from http://paulbourke.net/geometry/sphereline/raysphere.c - const double x_ref = ts.getReferencePoint()[0] ; - const double y_ref = ts.getReferencePoint()[1] ; - const double z_ref = ts.getReferencePoint()[2] ; + const double x_ref = ts.referencePoint[0] ; + const double y_ref = ts.referencePoint[1] ; + const double z_ref = ts.referencePoint[2] ; - const double d0 = ts.getD0() ; - const double z0 = ts.getZ0() ; - const double phi0 = ts.getPhi() ; - const double tanl = ts.getTanLambda() ; - const double omega = ts.getOmega() ; + const double d0 = ts.D0 ; + const double z0 = ts.Z0 ; + const double phi0 = ts.phi ; + const double tanl = ts.tanLambda ; + const double omega = ts.omega ; const double rho = 1.0 / omega ; const double x_pca = x_ref - d0 * sin(phi0) ; diff --git a/Service/TrackSystemSvc/src/MarlinKalTest.cc b/Service/TrackSystemSvc/src/MarlinKalTest.cc index b6e32021c64d9520611e7737dd1e734922d15a37..38a4f5fc5c76b1c85827b185ee12b41ba6fe9849 100644 --- a/Service/TrackSystemSvc/src/MarlinKalTest.cc +++ b/Service/TrackSystemSvc/src/MarlinKalTest.cc @@ -418,11 +418,11 @@ namespace MarlinTrk{ return ml_retval; } - const ILDVMeasLayer* MarlinKalTest::findMeasLayer( edm4hep::TrackerHit* trkhit) const { + const ILDVMeasLayer* MarlinKalTest::findMeasLayer( edm4hep::ConstTrackerHit trkhit) const { - const TVector3 hit_pos( trkhit->getPosition()[0], trkhit->getPosition()[1], trkhit->getPosition()[2]) ; + const TVector3 hit_pos( trkhit.getPosition()[0], trkhit.getPosition()[1], trkhit.getPosition()[2]) ; - return this->findMeasLayer( trkhit->getCellID(), hit_pos ) ; + return this->findMeasLayer( trkhit.getCellID(), hit_pos ) ; } diff --git a/Service/TrackSystemSvc/src/MarlinKalTest.h b/Service/TrackSystemSvc/src/MarlinKalTest.h index ac9ed1520838f32a35d8547a3e982dab0ddb89d1..2e62bd09980cbe93886692f9a6708fa8c02d1177 100644 --- a/Service/TrackSystemSvc/src/MarlinKalTest.h +++ b/Service/TrackSystemSvc/src/MarlinKalTest.h @@ -2,6 +2,7 @@ #define MarlinKalTest_h #include "TrackSystemSvc/IMarlinTrkSystem.h" +#include "edm4hep/TrackerHitConst.h" #include "gear/GearMgr.h" @@ -79,7 +80,7 @@ namespace MarlinTrk{ bool is_initialised ; //** find the measurment layer for a given hit - const ILDVMeasLayer* findMeasLayer(edm4hep::TrackerHit* trkhit) const ; + const ILDVMeasLayer* findMeasLayer(edm4hep::ConstTrackerHit trkhit) const ; //** find the measurment layer for a given det element ID and point in space const ILDVMeasLayer* findMeasLayer(int detElementID, const TVector3& point) const ; diff --git a/Service/TrackSystemSvc/src/MarlinKalTestTrack.cc b/Service/TrackSystemSvc/src/MarlinKalTestTrack.cc index 4c0bf1539129e6772f6557a6d9411f0035bf2a81..6a4ec5925048849ee2048de91c2a4cf518ae1805 100644 --- a/Service/TrackSystemSvc/src/MarlinKalTestTrack.cc +++ b/Service/TrackSystemSvc/src/MarlinKalTestTrack.cc @@ -109,33 +109,28 @@ namespace MarlinTrk { - int MarlinKalTestTrack::addHit( edm4hep::TrackerHit* trkhit) { - const ILDVMeasLayer* ml = 0; - try{ - ml = _ktest->findMeasLayer( trkhit ); - } - catch(MarlinTrk::Exception& e){ - std::cout << e.what() << std::endl; - } - return this->addHit( trkhit, ml) ; + int MarlinKalTestTrack::addHit( edm4hep::ConstTrackerHit trkhit) { + + return this->addHit( trkhit, _ktest->findMeasLayer( trkhit )) ; } - int MarlinKalTestTrack::addHit( edm4hep::TrackerHit* trkhit, const ILDVMeasLayer* ml) { - //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit->id() << " addr: " << trkhit << " ml = " << ml << std::endl ; - if( trkhit && ml ) { + int MarlinKalTestTrack::addHit( edm4hep::ConstTrackerHit trkhit, const ILDVMeasLayer* ml) { + //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit.id() << " addr: " << trkhit << " ml = " << ml << std::endl ; + if( trkhit.isAvailable() && ml ) { //if(ml){ return this->addHit( trkhit, ml->ConvertLCIOTrkHit(trkhit), ml) ; } else { - //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit->id() << " addr: " << trkhit << " ml = " << ml << std::endl ; + std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit.id() << " addr: " << trkhit << " ml = " << ml << std::endl ; + //streamlog_out( ERROR ) << " MarlinKalTestTrack::addHit - bad inputs " << trkhit << " ml : " << ml << std::endl ; return bad_intputs ; } return bad_intputs ; } - int MarlinKalTestTrack::addHit( edm4hep::TrackerHit* trkhit, ILDVTrackHit* kalhit, const ILDVMeasLayer* ml) { - //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit->id() << " ILDVTrackHit: " << kalhit << " ml = " << ml << std::endl ; + int MarlinKalTestTrack::addHit( edm4hep::ConstTrackerHit trkhit, ILDVTrackHit* kalhit, const ILDVMeasLayer* ml) { + //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit.id() << " ILDVTrackHit: " << kalhit << " ml = " << ml << std::endl ; if( kalhit && ml ) { //if(ml){ _kalhits->Add(kalhit ) ; // Add hit and set surface found @@ -143,7 +138,7 @@ namespace MarlinTrk { // _kaltest_hits_to_lcio_hits[kalhit] = trkhit ; // add hit to map relating kaltest and lcio hits } else { - //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit->id() << " ILDVTrackHit: " << kalhit << " ml = " << ml << std::endl ; + //std::cout << "MarlinKalTestTrack::addHit: trkhit = " << trkhit.id() << " ILDVTrackHit: " << kalhit << " ml = " << ml << std::endl ; if(kalhit) delete kalhit; return bad_intputs ; } @@ -614,21 +609,21 @@ namespace MarlinTrk { // get the measurement layer of the current hit const ILDVMeasLayer* ml = dynamic_cast<const ILDVMeasLayer*>( &(kalhit->GetMeasLayer() ) ) ; TVector3 pos = ml->HitToXv(*kalhit); - /* std::cout << "debug: Kaltrack::addAndFit : site discarded! at index : " << ml->GetIndex() - << " for type " << ml->GetName() - << " chi2increment = " << chi2increment - << " maxChi2Increment = " << maxChi2Increment - << " x = " << pos.x() - << " y = " << pos.y() - << " z = " << pos.z() - << " with CellIDs: " << std::endl; + << " for type " << ml->GetName() + << " chi2increment = " << chi2increment + << " maxChi2Increment = " << maxChi2Increment + << " x = " << pos.x() + << " y = " << pos.y() + << " z = " << pos.z() + << " with CellIDs: " << std::endl; + for (unsigned int i = 0; i < (dynamic_cast<const ILDVMeasLayer*>( &(kalhit->GetMeasLayer() ) )->getNCellIDs());++i) { std::cout << "debug: CellID = " << dynamic_cast<const ILDVMeasLayer*>( &(kalhit->GetMeasLayer() ) )->getCellIDs()[i] << std::endl ; } - */ + #ifdef MARLINTRK_DIAGNOSTICS_ON _ktest->_diagnostics.record_rejected_site(kalhit, temp_site); @@ -674,9 +669,9 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::addAndFit( edm4hep::TrackerHit* trkhit, double& chi2increment, double maxChi2Increment) { + int MarlinKalTestTrack::addAndFit( edm4hep::ConstTrackerHit trkhit, double& chi2increment, double maxChi2Increment) { - if( ! trkhit ) { + if( ! trkhit.isAvailable() ) { std::cout << "Error: MarlinKalTestTrack::addAndFit(edm4hep::TrackerHit trkhit, double& chi2increment, double maxChi2Increment): trkhit == 0" << std::endl; return bad_intputs ; } @@ -688,8 +683,8 @@ namespace MarlinTrk { // if point is not on surface and more than one surface exists ... std::cout << "Error>>>>>>>>>>> no measurment layer found for trkhit cellid0 : " - << decodeILD( trkhit->getCellID() ) << " at " - << trkhit->getPosition() << std::endl ; + << decodeILD( trkhit.getCellID() ) << " at " + << trkhit.getPosition() << std::endl ; return IMarlinTrack::bad_intputs ; } @@ -726,14 +721,14 @@ namespace MarlinTrk { } // set the values for the point at which the fit becomes constained - if( _trackHitAtPositiveNDF == 0 && _kaltrack->GetNDF() >= 0){ + if(! _trackHitAtPositiveNDF.isAvailable() && _kaltrack->GetNDF() >= 0){ _trackHitAtPositiveNDF = trkhit; _hitIndexAtPositiveNDF = _kaltrack->IndexOf( site ); /* streamlog_out( DEBUG2 ) << ">>>>>>>>>>> Fit is now constrained at : " - << decodeILD( trkhit->getCellID() ) - << " pos " << trkhit->getPosition() + << decodeILD( trkhit.getCellID() ) + << " pos " << trkhit.getPosition() << " trkhit = " << _trackHitAtPositiveNDF << " index of kalhit = " << _hitIndexAtPositiveNDF << " NDF = " << _kaltrack->GetNDF() @@ -747,7 +742,7 @@ namespace MarlinTrk { - int MarlinKalTestTrack::testChi2Increment( edm4hep::TrackerHit* trkhit, double& chi2increment ) { + int MarlinKalTestTrack::testChi2Increment( edm4hep::ConstTrackerHit trkhit, double& chi2increment ) { //if( ! trkhit ) { // streamlog_out( ERROR) << "MarlinKalTestTrack::addAndFit(edm4hep::TrackerHit trkhit, double& chi2increment, double maxChi2Increment): trkhit == 0" << std::endl; @@ -761,8 +756,8 @@ namespace MarlinTrk { // if point is not on surface and more than one surface exists ... std::cout << "Error>>>>>>>>>>> no measurment layer found for trkhit cellid0 : " - << decodeILD( trkhit->getCellID() ) << " at " - << trkhit->getPosition() << std::endl ; + << decodeILD( trkhit.getCellID() ) << " at " + << trkhit.getPosition() << std::endl ; return IMarlinTrack::bad_intputs ; @@ -821,21 +816,21 @@ namespace MarlinTrk { int error_code = this->addAndFit( kalhit, chi2increment, site, maxChi2Increment ); - edm4hep::TrackerHit* trkhit = kalhit->getLCIOTrackerHit(); + edm4hep::ConstTrackerHit trkhit = kalhit->getLCIOTrackerHit(); if( error_code == 0 ){ // add trkhit to map associating trkhits and sites _hit_used_for_sites[trkhit] = site; _hit_chi2_values.push_back(std::make_pair(trkhit, chi2increment)); // set the values for the point at which the fit becomes constained - if( _trackHitAtPositiveNDF == 0 && _kaltrack->GetNDF() >= 0){ + if( !_trackHitAtPositiveNDF.isAvailable() && _kaltrack->GetNDF() >= 0){ _trackHitAtPositiveNDF = trkhit; _hitIndexAtPositiveNDF = _kaltrack->IndexOf( site ); /* streamlog_out( DEBUG2 ) << ">>>>>>>>>>> Fit is now constrained at : " - << decodeILD( trkhit->getCellID() ) - << " pos " << trkhit->getPosition() + << decodeILD( trkhit.getCellID() ) + << " pos " << trkhit.getPosition() << " trkhit = " << _trackHitAtPositiveNDF << " index of kalhit = " << _hitIndexAtPositiveNDF << " NDF = " << _kaltrack->GetNDF() @@ -907,15 +902,15 @@ namespace MarlinTrk { /** smooth track states from the last filtered hit back to the measurement site associated with the given hit */ - int MarlinKalTestTrack::smooth( edm4hep::TrackerHit* trkhit ) { + int MarlinKalTestTrack::smooth( edm4hep::ConstTrackerHit trkhit ) { //streamlog_out( DEBUG2 ) << "MarlinKalTestTrack::smooth( edm4hep::TrackerHit " << trkhit << " ) " << std::endl ; - if ( !trkhit ) { + if ( !trkhit.isAvailable() ) { return bad_intputs ; } - std::map<edm4hep::TrackerHit*, TKalTrackSite*>::const_iterator it; + std::map<edm4hep::ConstTrackerHit, TKalTrackSite*>::const_iterator it; TKalTrackSite* site = 0 ; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -948,9 +943,9 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::getTrackState( edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ) { + int MarlinKalTestTrack::getTrackState( edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ) { - //streamlog_out( DEBUG2 ) << "MarlinKalTestTrack::getTrackState(edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts ) using hit: " << trkhit << " with cellID0 = " << trkhit->getCellID() << std::endl ; + //streamlog_out( DEBUG2 ) << "MarlinKalTestTrack::getTrackState(edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts ) using hit: " << trkhit << " with cellID0 = " << trkhit.getCellID() << std::endl ; TKalTrackSite* site = 0 ; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -965,7 +960,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::getHitsInFit( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) { + int MarlinKalTestTrack::getHitsInFit( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) { //std::cout << "debug: _hit_chi2_values address= " << &_hit_chi2_values << " " << &(*(_hit_chi2_values.begin())) << " want to copy to hits address=" << &hits << std::endl; std::copy( _hit_chi2_values.begin() , _hit_chi2_values.end() , std::back_inserter( hits ) ) ; //hits.resize(_hit_chi2_values.size()); @@ -987,7 +982,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::getOutliers( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) { + int MarlinKalTestTrack::getOutliers( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) { std::copy( _outlier_chi2_values.begin() , _outlier_chi2_values.end() , std::back_inserter( hits ) ) ; @@ -1018,7 +1013,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::getTrackerHitAtPositiveNDF( edm4hep::TrackerHit*& trkhit ) { + int MarlinKalTestTrack::getTrackerHitAtPositiveNDF( edm4hep::ConstTrackerHit& trkhit ) { trkhit = _trackHitAtPositiveNDF; return success; @@ -1034,7 +1029,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::extrapolate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ) { + int MarlinKalTestTrack::extrapolate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ) { TKalTrackSite* site = 0 ; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1086,7 +1081,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::extrapolateToLayer( int layerID, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode ) { + int MarlinKalTestTrack::extrapolateToLayer( int layerID, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1123,7 +1118,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::extrapolateToDetElement( int detElementID, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode ) { + int MarlinKalTestTrack::extrapolateToDetElement( int detElementID, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1164,7 +1159,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::propagate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ){ + int MarlinKalTestTrack::propagate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf ){ TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1274,7 +1269,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::propagateToLayer( int layerID, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode ) { + int MarlinKalTestTrack::propagateToLayer( int layerID, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1312,7 +1307,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::propagateToDetElement( int detElementID, edm4hep::TrackerHit* trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode ) { + int MarlinKalTestTrack::propagateToDetElement( int detElementID, edm4hep::ConstTrackerHit trkhit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1350,7 +1345,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::intersectionWithDetElement( int detElementID, edm4hep::TrackerHit* trkhit, edm4hep::Vector3d& point, int mode ) { + int MarlinKalTestTrack::intersectionWithDetElement( int detElementID, edm4hep::ConstTrackerHit trkhit, edm4hep::Vector3d& point, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1417,7 +1412,7 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::intersectionWithLayer( int layerID, edm4hep::TrackerHit* trkhit, edm4hep::Vector3d& point, int& detElementID, int mode ) { + int MarlinKalTestTrack::intersectionWithLayer( int layerID, edm4hep::ConstTrackerHit trkhit, edm4hep::Vector3d& point, int& detElementID, int mode ) { TKalTrackSite* site = 0; int error_code = getSiteFromLCIOHit(trkhit, site); @@ -1668,9 +1663,9 @@ namespace MarlinTrk { } - int MarlinKalTestTrack::getSiteFromLCIOHit( edm4hep::TrackerHit* trkhit, TKalTrackSite*& site ) const { + int MarlinKalTestTrack::getSiteFromLCIOHit( edm4hep::ConstTrackerHit trkhit, TKalTrackSite*& site ) const { - std::map<edm4hep::TrackerHit*,TKalTrackSite*>::const_iterator it; + std::map<edm4hep::ConstTrackerHit,TKalTrackSite*>::const_iterator it; it = _hit_used_for_sites.find(trkhit) ; diff --git a/Service/TrackSystemSvc/src/MarlinKalTestTrack.h b/Service/TrackSystemSvc/src/MarlinKalTestTrack.h index 50551db837a399b61fbc9c99907a333b1b41b5e7..1df08e4972dc66d53050a9f1fbad5a94ff6af2a2 100644 --- a/Service/TrackSystemSvc/src/MarlinKalTestTrack.h +++ b/Service/TrackSystemSvc/src/MarlinKalTestTrack.h @@ -49,17 +49,17 @@ namespace MarlinTrk{ /** add hit to track - the hits have to be added ordered in time ( i.e. typically outgoing ) * this order will define the direction of the energy loss used in the fit */ - int addHit(edm4hep::TrackerHit* hit) ; + int addHit(edm4hep::ConstTrackerHit hit) ; /** add hit to track - the hits have to be added ordered in time ( i.e. typically outgoing ) * this order will define the direction of the energy loss used in the fit */ - int addHit(edm4hep::TrackerHit* trkhit, const ILDVMeasLayer* ml) ; + int addHit(edm4hep::ConstTrackerHit trkhit, const ILDVMeasLayer* ml) ; /** add hit to track - the hits have to be added ordered in time ( i.e. typically outgoing ) * this order will define the direction of the energy loss used in the fit */ - int addHit( edm4hep::TrackerHit* trkhit, ILDVTrackHit* kalhit, const ILDVMeasLayer* ml) ; + int addHit( edm4hep::ConstTrackerHit trkhit, ILDVTrackHit* kalhit, const ILDVMeasLayer* ml) ; /** initialise the fit using the hits added up to this point - * the fit direction has to be specified using IMarlinTrack::backward or IMarlinTrack::forward. @@ -90,13 +90,13 @@ namespace MarlinTrk{ /** smooth track states from the last filtered hit back to the measurement site associated with the given hit */ - int smooth( edm4hep::TrackerHit* hit ) ; + int smooth( edm4hep::ConstTrackerHit hit ) ; /** update the current fit using the supplied hit, return code via int. Provides the Chi2 increment to the fit from adding the hit via reference. * the given hit will not be added if chi2increment > maxChi2Increment. */ - int addAndFit( edm4hep::TrackerHit* hit, double& chi2increment, double maxChi2Increment=DBL_MAX ) ; + int addAndFit( edm4hep::ConstTrackerHit hit, double& chi2increment, double maxChi2Increment=DBL_MAX ) ; /** update the current fit using the supplied hit, return code via int. Provides the Chi2 increment to the fit from adding the hit via reference. * the given hit will not be added if chi2increment > maxChi2Increment. @@ -106,7 +106,7 @@ namespace MarlinTrk{ /** obtain the chi2 increment which would result in adding the hit to the fit. This method will not alter the current fit, and the hit will not be stored in the list of hits or outliers */ - int testChi2Increment( edm4hep::TrackerHit* hit, double& chi2increment ) ; + int testChi2Increment( edm4hep::ConstTrackerHit hit, double& chi2increment ) ; // Track State Accessesors @@ -118,7 +118,7 @@ namespace MarlinTrk{ /** get track state at measurement associated with the given hit, returning TrackState, chi2 and ndf via reference */ - int getTrackState( edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; + int getTrackState( edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; /** get the list of hits included in the fit, together with the chi2 contributions of the hits. @@ -126,14 +126,14 @@ namespace MarlinTrk{ * pairs consitining of the pointer as the first part of the pair and the chi2 contribution as * the second. */ - int getHitsInFit( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) ; + int getHitsInFit( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) ; /** get the list of hits which have been rejected by from the fit due to the a chi2 increment greater than threshold, * Pointers to the hits together with their chi2 contribution will be filled into a vector of * pairs consitining of the pointer as the first part of the pair and the chi2 contribution as * the second. */ - int getOutliers( std::vector<std::pair<edm4hep::TrackerHit*, double> >& hits ) ; + int getOutliers( std::vector<std::pair<edm4hep::ConstTrackerHit, double> >& hits ) ; /** get the current number of degrees of freedom for the fit. @@ -142,7 +142,7 @@ namespace MarlinTrk{ /** get TrackeHit at which fit became constrained, i.e. ndf >= 0 */ - int getTrackerHitAtPositiveNDF( edm4hep::TrackerHit*& trkhit ) ; + int getTrackerHitAtPositiveNDF( edm4hep::ConstTrackerHit& trkhit ) ; // PROPAGATORS @@ -154,7 +154,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to the point of closest approach to the given point, * returning TrackState, chi2 and ndf via reference */ - int propagate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; + int propagate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; /** propagate the fit at the provided measurement site, to the point of closest approach to the given point, @@ -170,7 +170,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference */ - int propagateToLayer( int layerID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) ; + int propagateToLayer( int layerID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) ; /** propagate the fit at the measurement site, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference @@ -184,7 +184,7 @@ namespace MarlinTrk{ /** propagate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning TrackState, chi2 and ndf via reference */ - int propagateToDetElement( int detEementID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) ; + int propagateToDetElement( int detEementID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) ; /** propagate the fit at the measurement site, to sensitive detector element, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference @@ -202,7 +202,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to the point of closest approach to the given point, * returning TrackState, chi2 and ndf via reference */ - int extrapolate( const edm4hep::Vector3d& point, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; + int extrapolate( const edm4hep::Vector3d& point, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf ) ; /** extrapolate the fit at the measurement site, to the point of closest approach to the given point, * returning TrackState, chi2 and ndf via reference @@ -216,7 +216,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference */ - int extrapolateToLayer( int layerID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) ; + int extrapolateToLayer( int layerID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int& detElementID, int mode=modeClosest ) ; /** extrapolate the fit at the measurement site, to numbered sensitive layer, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference @@ -230,7 +230,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning TrackState, chi2 and ndf via reference */ - int extrapolateToDetElement( int detEementID, edm4hep::TrackerHit* hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) ; + int extrapolateToDetElement( int detEementID, edm4hep::ConstTrackerHit hit, edm4hep::TrackState& ts, double& chi2, int& ndf, int mode=modeClosest ) ; /** extrapolate the fit at the measurement site, to sensitive detector element, * returning TrackState, chi2, ndf and integer ID of sensitive detector element via reference @@ -250,7 +250,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to numbered sensitive layer, * returning intersection point in global coordinates and integer ID of the intersected sensitive detector element via reference */ - int intersectionWithLayer( int layerID, edm4hep::TrackerHit* hit, edm4hep::Vector3d& point, int& detElementID, int mode=modeClosest ) ; + int intersectionWithLayer( int layerID, edm4hep::ConstTrackerHit hit, edm4hep::Vector3d& point, int& detElementID, int mode=modeClosest ) ; /** extrapolate the fit at the measurement site, to numbered sensitive layer, * returning intersection point in global coordinates and integer ID of the intersected sensitive detector element via reference @@ -265,7 +265,7 @@ namespace MarlinTrk{ /** extrapolate the fit at the measurement site associated with the given hit, to sensitive detector element, * returning intersection point in global coordinates via reference */ - int intersectionWithDetElement( int detElementID, edm4hep::TrackerHit* hit, edm4hep::Vector3d& point, int mode=modeClosest ) ; + int intersectionWithDetElement( int detElementID, edm4hep::ConstTrackerHit hit, edm4hep::Vector3d& point, int mode=modeClosest ) ; /** extrapolate the fit at the measurement site, to sensitive detector element, * returning intersection point in global coordinates via reference @@ -297,7 +297,7 @@ namespace MarlinTrk{ /** get the measurement site associated with the given lcio TrackerHit trkhit */ - int getSiteFromLCIOHit( edm4hep::TrackerHit* trkhit, TKalTrackSite*& site ) const ; + int getSiteFromLCIOHit( edm4hep::ConstTrackerHit trkhit, TKalTrackSite*& site ) const ; @@ -313,13 +313,13 @@ namespace MarlinTrk{ TKalTrack* _kaltrack; - std::vector<edm4hep::TrackerHit*> _lcioHits ; + std::vector<edm4hep::ConstTrackerHit> _lcioHits ; TObjArray* _kalhits; MarlinKalTest* _ktest; - edm4hep::TrackerHit* _trackHitAtPositiveNDF; + edm4hep::ConstTrackerHit _trackHitAtPositiveNDF; int _hitIndexAtPositiveNDF; /** used to store whether initial track state has been supplied or created @@ -337,23 +337,23 @@ namespace MarlinTrk{ /** map to store relation between lcio hits and measurement sites */ - std::map<edm4hep::TrackerHit*, TKalTrackSite*> _hit_used_for_sites ; + std::map<edm4hep::ConstTrackerHit, TKalTrackSite*> _hit_used_for_sites ; /** map to store relation between lcio hits kaltest hits */ - std::map<edm4hep::TrackerHit*, ILDVTrackHit*> _lcio_hits_to_kaltest_hits ; + std::map<edm4hep::ConstTrackerHit, ILDVTrackHit*> _lcio_hits_to_kaltest_hits ; /** vector to store lcio hits rejected for measurement sites */ - std::vector<edm4hep::TrackerHit*> _hit_not_used_for_sites ; + std::vector<edm4hep::ConstTrackerHit> _hit_not_used_for_sites ; /** vector to store the chi-sqaure increment for measurement sites */ - std::vector< std::pair<edm4hep::TrackerHit*, double> > _hit_chi2_values ; + std::vector< std::pair<edm4hep::ConstTrackerHit, double> > _hit_chi2_values ; /** vector to store the chi-sqaure increment for measurement sites */ - std::vector< std::pair<edm4hep::TrackerHit*, double> > _outlier_chi2_values ; + std::vector< std::pair<edm4hep::ConstTrackerHit, double> > _outlier_chi2_values ; } ; } diff --git a/Service/TrackSystemSvc/src/MarlinTrkDiagnostics.cc.remove b/Service/TrackSystemSvc/src/MarlinTrkDiagnostics.cc.remove deleted file mode 100644 index 46aebfe69d87d0ad4a2c95663cdf96f7b185d8d0..0000000000000000000000000000000000000000 --- a/Service/TrackSystemSvc/src/MarlinTrkDiagnostics.cc.remove +++ /dev/null @@ -1,63 +0,0 @@ - -#include "MarlinTrkDiagnostics.h" - -#include "EVENT/LCObject.h" -#include "UTIL/BitSet32.h" -#include "UTIL/ILDConf.h" - -#ifdef MARLINTRK_DIAGNOSTICS_ON - -namespace MarlinTrk{ - - - void getMCParticlesForTrackerHit(EVENT::TrackerHit* trkhit, std::vector<EVENT::MCParticle*>& mcps){ - - if ( !trkhit ) { - return; - } - - // make sure there is nothing in the vector we wish to return - mcps.clear(); - - // first check if this is a composite space point - if(UTIL::BitSet32( trkhit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ]){ - - const EVENT::LCObjectVec rawObjects = trkhit->getRawHits(); - - for (unsigned iraw = 0; iraw < rawObjects.size(); ++iraw) { - - EVENT::TrackerHit* rawHit = dynamic_cast< EVENT::TrackerHit* >( rawObjects[iraw] ); - - if( rawHit && rawHit->ext<MarlinTrk::MCTruth4HitExt>()){ - - EVENT::MCParticle* mcp = rawHit->ext<MarlinTrk::MCTruth4HitExt>()->simhit->getMCParticle(); - bool found = false; - // check that it is not already in the vector - for (unsigned imcp=0; imcp<mcps.size(); ++imcp) { - if (mcp == mcps[imcp]) { - found = true; - break; - } - } - - if( found == false ) mcps.push_back(mcp); - - } - - - } // end of loop over rawObjects - - // end if COMPOSITE_SPACEPOINT - } else { - - - if( trkhit->ext<MarlinTrk::MCTruth4HitExt>()){ - mcps.push_back(trkhit->ext<MarlinTrk::MCTruth4HitExt>()->simhit->getMCParticle()); - } - - - } - } -} - -#endif diff --git a/Service/TrackSystemSvc/src/MarlinTrkUtils.cc b/Service/TrackSystemSvc/src/MarlinTrkUtils.cc index f28442a27eb1a9e30fde81cbdd5f00c89ff77d55..a3654ec7f8dfec1c2b472b5b507bc9c67a6f8ab8 100644 --- a/Service/TrackSystemSvc/src/MarlinTrkUtils.cc +++ b/Service/TrackSystemSvc/src/MarlinTrkUtils.cc @@ -91,9 +91,9 @@ namespace MarlinTrk { - int createTrackStateAtCaloFace( IMarlinTrack* marlinTrk, edm4hep::TrackState* track, edm4hep::TrackerHit* trkhit, bool tanL_is_positive ); + int createTrackStateAtCaloFace( IMarlinTrack* marlinTrk, edm4hep::TrackState* track, edm4hep::ConstTrackerHit trkhit, bool tanL_is_positive ); - int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, std::vector<edm4hep::TrackerHit*>& hit_list, edm4hep::Track* track, bool fit_backwards, const std::array<float,15>& initial_cov_for_prefit, float bfield_z, double maxChi2Increment){ + int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::Track* track, bool fit_backwards, const std::array<float,15>& initial_cov_for_prefit, float bfield_z, double maxChi2Increment){ /////////////////////////////////////////////////////// // check inputs @@ -130,7 +130,7 @@ namespace MarlinTrk { return return_error; } - int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, std::vector<edm4hep::TrackerHit*>& hit_list, edm4hep::Track* track, bool fit_backwards, edm4hep::TrackState* pre_fit, float bfield_z, double maxChi2Increment){ + int createFinalisedLCIOTrack( IMarlinTrack* marlinTrk, std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::Track* track, bool fit_backwards, edm4hep::TrackState* pre_fit, float bfield_z, double maxChi2Increment){ /////////////////////////////////////////////////////// @@ -164,7 +164,7 @@ namespace MarlinTrk { - int createFit( std::vector<edm4hep::TrackerHit*>& hit_list, IMarlinTrack* marlinTrk, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards, double maxChi2Increment){ + int createFit( std::vector<edm4hep::ConstTrackerHit>& hit_list, IMarlinTrack* marlinTrk, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards, double maxChi2Increment){ /////////////////////////////////////////////////////// @@ -203,27 +203,27 @@ namespace MarlinTrk { // add hits to IMarlinTrk /////////////////////////////////////////////////////// - std::vector<edm4hep::TrackerHit*>::iterator it = hit_list.begin(); + std::vector<edm4hep::ConstTrackerHit>::iterator it = hit_list.begin(); // start by trying to add the hits to the track we want to finally use. //std::cout << "MarlinTrk::createFit Start Fit: AddHits: number of hits to fit " << hit_list.size() << std::endl; - std::vector<edm4hep::TrackerHit*> added_hits; + std::vector<edm4hep::ConstTrackerHit> added_hits; unsigned int ndof_added = 0; for( it = hit_list.begin() ; it != hit_list.end() ; ++it ) { - edm4hep::TrackerHit* trkHit = *it; + edm4hep::ConstTrackerHit trkHit = *it; bool isSuccessful = false; //std::cout << "debug: TrackerHit pointer " << trkHit << std::endl; - if( UTIL::BitSet32( trkHit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint + if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint //Split it up and add both hits to the MarlinTrk //const EVENT::LCObjectVec rawObjects = trkHit->getRawHits(); //std::cout << "space point is not still valid! pelease wait updating..." <<std::endl; //exit(1); - int nRawHit = trkHit->rawHits_size(); + int nRawHit = trkHit.rawHits_size(); for( unsigned k=0; k< nRawHit; k++ ){ - edm4hep::TrackerHit* rawHit = Navigation::Instance()->GetTrackerHit(trkHit->getRawHits(k)); + edm4hep::ConstTrackerHit rawHit = Navigation::Instance()->GetTrackerHit(trkHit.getRawHits(k)); if( marlinTrk->addHit( rawHit ) == IMarlinTrack::success ){ isSuccessful = true; //if at least one hit from the spacepoint gets added ++ndof_added; @@ -280,7 +280,7 @@ namespace MarlinTrk { - int createPrefit( std::vector<edm4hep::TrackerHit*>& hit_list, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards){ + int createPrefit( std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::TrackState* pre_fit, float bfield_z, bool fit_backwards){ /////////////////////////////////////////////////////// // check inputs @@ -295,12 +295,12 @@ namespace MarlinTrk { // loop over all the hits and create a list consisting only 2D hits /////////////////////////////////////////////////////// - std::vector<edm4hep::TrackerHit*> twoD_hits; + std::vector<edm4hep::ConstTrackerHit> twoD_hits; for (unsigned ihit=0; ihit < hit_list.size(); ++ihit) { // check if this a space point or 2D hit - if(UTIL::BitSet32( hit_list[ihit]->getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] == false ){ + if(UTIL::BitSet32( hit_list[ihit].getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] == false ){ // then add to the list twoD_hits.push_back(hit_list[ihit]); @@ -321,18 +321,18 @@ namespace MarlinTrk { /////////////////////////////////////////////////////// // SJA:FIXME: this may not be the optimal 3 hits to take in certain cases where the 3 hits are not well spread over the track length - const edm4hep::Vector3d& x1 = twoD_hits[0]->getPosition(); - const edm4hep::Vector3d& x2 = twoD_hits[ twoD_hits.size()/2 ]->getPosition(); - const edm4hep::Vector3d& x3 = twoD_hits.back()->getPosition(); + const edm4hep::Vector3d& x1 = twoD_hits[0].getPosition(); + const edm4hep::Vector3d& x2 = twoD_hits[ twoD_hits.size()/2 ].getPosition(); + const edm4hep::Vector3d& x3 = twoD_hits.back().getPosition(); HelixTrack helixTrack( x1, x2, x3, bfield_z, HelixTrack::forwards ); if ( fit_backwards == IMarlinTrack::backward ) { pre_fit->location = MarlinTrk::Location::AtLastHit; - helixTrack.moveRefPoint(hit_list.back()->getPosition()[0], hit_list.back()->getPosition()[1], hit_list.back()->getPosition()[2]); + helixTrack.moveRefPoint(hit_list.back().getPosition()[0], hit_list.back().getPosition()[1], hit_list.back().getPosition()[2]); } else { pre_fit->location = MarlinTrk::Location::AtFirstHit; - helixTrack.moveRefPoint(hit_list.front()->getPosition()[0], hit_list.front()->getPosition()[1], hit_list.front()->getPosition()[2]); + helixTrack.moveRefPoint(hit_list.front().getPosition()[0], hit_list.front().getPosition()[1], hit_list.front().getPosition()[2]); } @@ -350,7 +350,7 @@ namespace MarlinTrk { } - int finaliseLCIOTrack( IMarlinTrack* marlintrk, edm4hep::Track* track, std::vector<edm4hep::TrackerHit*>& hit_list, edm4hep::TrackState* atLastHit, edm4hep::TrackState* atCaloFace){ + int finaliseLCIOTrack( IMarlinTrack* marlintrk, edm4hep::Track* track, std::vector<edm4hep::ConstTrackerHit>& hit_list, edm4hep::TrackState* atLastHit, edm4hep::TrackState* atCaloFace){ /////////////////////////////////////////////////////// // check inputs @@ -405,9 +405,9 @@ namespace MarlinTrk { // add these to the track, add spacepoints as long as at least on strip hit is used. //////////////////////////////////////////////////////////////////////////////////////////////////////// - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; - std::vector<std::pair<edm4hep::TrackerHit*, double> > outliers; - std::vector<edm4hep::TrackerHit*> used_hits; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > outliers; + std::vector<edm4hep::ConstTrackerHit> used_hits; hits_in_fit.reserve(300); outliers.reserve(300); @@ -423,26 +423,26 @@ namespace MarlinTrk { for ( unsigned ihit = 0; ihit < hit_list.size(); ++ihit) { - edm4hep::TrackerHit* trkHit = hit_list[ihit]; + edm4hep::ConstTrackerHit trkHit = hit_list[ihit]; - if( UTIL::BitSet32( trkHit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint + if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint //std::cout << "Error: space point is not still valid! pelease wait updating..." <<std::endl; //exit(1); // get strip hits - int nRawHit = trkHit->rawHits_size(); + int nRawHit = trkHit.rawHits_size(); for( unsigned k=0; k< nRawHit; k++ ){ - edm4hep::TrackerHit* rawHit = Navigation::Instance()->GetTrackerHit(trkHit->getRawHits(k)); + edm4hep::ConstTrackerHit rawHit = Navigation::Instance()->GetTrackerHit(trkHit.getRawHits(k)); bool is_outlier = false; // here we loop over outliers as this will be faster than looping over the used hits for ( unsigned ohit = 0; ohit < outliers.size(); ++ohit) { - if ( rawHit->id() == outliers[ohit].first->id() ) { + if ( rawHit.id() == outliers[ohit].first.id() ) { is_outlier = true; break; // break out of loop over outliers } } if (is_outlier == false) { used_hits.push_back(hit_list[ihit]); - track->addToTrackerHits(*used_hits.back()); + track->addToTrackerHits(used_hits.back()); break; // break out of loop over rawObjects } } @@ -457,7 +457,7 @@ namespace MarlinTrk { } if (is_outlier == false) { used_hits.push_back(hit_list[ihit]); - track->addToTrackerHits(*used_hits.back()); + track->addToTrackerHits(used_hits.back()); } } } @@ -475,16 +475,16 @@ namespace MarlinTrk { /////////////////////////////////////////////////////// edm4hep::TrackState* trkStateAtFirstHit = new edm4hep::TrackState() ; - edm4hep::TrackerHit* firstHit = hits_in_fit.back().first; + edm4hep::ConstTrackerHit firstHit = hits_in_fit.back().first; /////////////////////////////////////////////////////// // last hit /////////////////////////////////////////////////////// edm4hep::TrackState* trkStateAtLastHit = new edm4hep::TrackState() ; - edm4hep::TrackerHit* lastHit = hits_in_fit.front().first; + edm4hep::ConstTrackerHit lastHit = hits_in_fit.front().first; - edm4hep::TrackerHit* last_constrained_hit = 0 ; + edm4hep::ConstTrackerHit last_constrained_hit = 0 ; marlintrk->getTrackerHitAtPositiveNDF(last_constrained_hit); return_error = marlintrk->smooth(lastHit); @@ -547,7 +547,7 @@ namespace MarlinTrk { delete trkStateAtFirstHit; } - double r_first = firstHit->getPosition()[0]*firstHit->getPosition()[0] + firstHit->getPosition()[1]*firstHit->getPosition()[1]; + double r_first = firstHit.getPosition()[0]*firstHit.getPosition()[0] + firstHit.getPosition()[1]*firstHit.getPosition()[1]; track->setRadiusOfInnermostHit(sqrt(r_first)); @@ -559,7 +559,7 @@ namespace MarlinTrk { //streamlog_out( DEBUG5 ) << " >>>>>>>>>>> create TrackState AtLastHit : using trkhit " << last_constrained_hit << std::endl ; - edm4hep::Vector3d last_hit_pos(lastHit->getPosition()); + edm4hep::Vector3d last_hit_pos(lastHit.getPosition()); return_error = marlintrk->propagate(last_hit_pos, last_constrained_hit, *trkStateAtLastHit, chi2, ndf); @@ -606,7 +606,7 @@ namespace MarlinTrk { } - int createTrackStateAtCaloFace( IMarlinTrack* marlintrk, edm4hep::TrackState* trkStateCalo, edm4hep::TrackerHit* trkhit, bool tanL_is_positive ){ + int createTrackStateAtCaloFace( IMarlinTrack* marlintrk, edm4hep::TrackState* trkStateCalo, edm4hep::ConstTrackerHit trkhit, bool tanL_is_positive ){ //streamlog_out( DEBUG5 ) << " >>>>>>>>>>> createTrackStateAtCaloFace : using trkhit " << trkhit << " tanL_is_positive = " << tanL_is_positive << std::endl ; @@ -621,7 +621,7 @@ namespace MarlinTrk { throw EVENT::Exception( std::string("MarlinTrk::createTrackStateAtCaloFace: TrackImpl == NULL ") ) ; } - if( trkhit == 0 ){ + if( !trkhit.isAvailable() ){ throw EVENT::Exception( std::string("MarlinTrk::createTrackStateAtCaloFace: TrackHit == NULL ") ) ; } @@ -661,7 +661,7 @@ namespace MarlinTrk { } - void addHitNumbersToTrack(edm4hep::Track* track, std::vector<edm4hep::TrackerHit*>& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder){ + void addHitNumbersToTrack(edm4hep::Track* track, std::vector<edm4hep::ConstTrackerHit>& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder){ /////////////////////////////////////////////////////// // check inputs @@ -679,7 +679,7 @@ namespace MarlinTrk { hitNumbers[UTIL::ILDDetID::ETD] = 0; for(unsigned int j=0; j<hit_list.size(); ++j) { - cellID_encoder.setValue(hit_list.at(j)->getCellID()) ; + cellID_encoder.setValue(hit_list.at(j).getCellID()) ; int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; ++hitNumbers[detID]; //std::cout << "debug: " << "Hit from Detector " << detID << std::endl; @@ -704,7 +704,7 @@ namespace MarlinTrk { //track->subdetectorHitNumbers()[ 2 * lcio::ILDDetID::ETD - offset ] = hitNumbers[lcio::ILDDetID::ETD]; } - void addHitNumbersToTrack(edm4hep::Track* track, std::vector<std::pair<edm4hep::TrackerHit* , double> >& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder){ + void addHitNumbersToTrack(edm4hep::Track* track, std::vector<std::pair<edm4hep::ConstTrackerHit , double> >& hit_list, bool hits_in_fit, UTIL::BitField64& cellID_encoder){ /////////////////////////////////////////////////////// // check inputs @@ -723,7 +723,7 @@ namespace MarlinTrk { hitNumbers[lcio::ILDDetID::ETD] = 0; for(unsigned int j=0; j<hit_list.size(); ++j) { - cellID_encoder.setValue(hit_list.at(j).first->getCellID()) ; + cellID_encoder.setValue(hit_list.at(j).first.getCellID()) ; int detID = cellID_encoder[UTIL::ILDCellID0::subdet]; ++hitNumbers[detID]; //std::cout << "debug: Hit from Detector " << detID << std::endl; diff --git a/Utilities/DataHelper/DataHelper/Navigation.h b/Utilities/DataHelper/DataHelper/Navigation.h index 238dd30ee280ae938208d4565c0e5231ab7cccff..a4870ba959eac6331764597ed9010d443c9c0c5d 100644 --- a/Utilities/DataHelper/DataHelper/Navigation.h +++ b/Utilities/DataHelper/DataHelper/Navigation.h @@ -19,7 +19,7 @@ class Navigation{ void AddTrackerHitCollection(const edm4hep::TrackerHitCollection* col){m_hitColVec.push_back(col);}; void AddTrackerAssociationCollection(const edm4hep::MCRecoTrackerAssociationCollection* col){m_assColVec.push_back(col);}; - edm4hep::TrackerHit* GetTrackerHit(const edm4hep::ObjectID& id, bool delete_by_caller=true); + edm4hep::ConstTrackerHit GetTrackerHit(const edm4hep::ObjectID& id, bool delete_by_caller=true); std::vector<edm4hep::ConstSimTrackerHit> GetRelatedTrackerHit(const edm4hep::ObjectID& id); std::vector<edm4hep::ConstSimTrackerHit> GetRelatedTrackerHit(const edm4hep::TrackerHit& hit); @@ -29,6 +29,6 @@ class Navigation{ //DataHandle<edm4hep::MCRecoTrackerAssociationCollection> _inHitAssColHdl{"FTDStripTrackerHitsAssociation", Gaudi::DataHandle::Reader, this}; std::vector<const edm4hep::TrackerHitCollection*> m_hitColVec; std::vector<const edm4hep::MCRecoTrackerAssociationCollection*> m_assColVec; - std::map<int, edm4hep::TrackerHit*> m_trkHits; + std::map<int, edm4hep::ConstTrackerHit> m_trkHits; }; #endif diff --git a/Utilities/DataHelper/DataHelper/TrackExtended.h b/Utilities/DataHelper/DataHelper/TrackExtended.h index 61ff59234a70b999a8e5c02208efab5062fbfd06..687db47d972fabe2ecf9ecea4716a4d93d24f6eb 100644 --- a/Utilities/DataHelper/DataHelper/TrackExtended.h +++ b/Utilities/DataHelper/DataHelper/TrackExtended.h @@ -4,6 +4,7 @@ //#include "lcio.h" //#include "EVENT/LCIO.h" #include "edm4hep/Track.h" +#include "edm4hep/TrackConst.h" #include <vector> //#include "ClusterExtended.h" //#include "TrackerHitExtended.h" @@ -32,10 +33,10 @@ class TrackExtended { TrackExtended( ); TrackExtended( TrackerHitExtended * trackerhit ); - TrackExtended( edm4hep::Track * track ); + TrackExtended( edm4hep::ConstTrack track ); ~TrackExtended(); - edm4hep::Track * getTrack(); + edm4hep::ConstTrack getTrack(); const float * getSeedDirection(); const float * getSeedPosition(); ClusterExtendedVec & getClusterVec(); @@ -95,7 +96,7 @@ class TrackExtended { ClusterExtended *_superCluster; ClusterExtendedVec _clusterVec; GroupTracks * _group; - edm4hep::Track * _track; + edm4hep::ConstTrack _track; float _seedDirection[3]; float _seedPosition[3]; TrackerHitExtendedVec _trackerHitVector; diff --git a/Utilities/DataHelper/DataHelper/TrackHitPair.h b/Utilities/DataHelper/DataHelper/TrackHitPair.h new file mode 100755 index 0000000000000000000000000000000000000000..f9e8b794c92e04ac239cb5bcf063770e4e01d068 --- /dev/null +++ b/Utilities/DataHelper/DataHelper/TrackHitPair.h @@ -0,0 +1,38 @@ +#ifndef TRACKHITPAIR_H +#define TRACKHITPAIR_H 1 + +#include "TrackExtended.h" +#include "TrackerHitExtended.h" +#include <vector> + +class TrackHitPair; + +typedef std::vector<TrackHitPair*> TrackHitPairVec; +/** + * Class implementing association of TrackExtended and TrackerHitExtended objects. <br> + * @author A. Raspereza (MPI-Munich)<br> + */ + +class TrackHitPair { + + public: + + TrackHitPair(TrackExtended * trkExt, TrackerHitExtended * hitExt, float distance); + ~TrackHitPair(); + void setTrackExtended(TrackExtended * trkExt); + void setTrackerHitExtended(TrackerHitExtended * hitExt); + void setDistance(float distance); + TrackExtended * getTrackExtended(); + TrackerHitExtended * getTrackerHitExtended(); + float getDistance(); + + + private: + TrackExtended * _trackExtended; + TrackerHitExtended * _trackerHitExtended; + float _distance; + + +}; + +#endif diff --git a/Utilities/DataHelper/DataHelper/TrackerHitExtended.h b/Utilities/DataHelper/DataHelper/TrackerHitExtended.h index d625679e387fb6d1627a72421ad9b3d315c93471..1962d59e99e6c146133deaaf7d1a6838253a4333 100644 --- a/Utilities/DataHelper/DataHelper/TrackerHitExtended.h +++ b/Utilities/DataHelper/DataHelper/TrackerHitExtended.h @@ -24,14 +24,14 @@ class TrackerHitExtended { public: - TrackerHitExtended(const edm4hep::TrackerHit& trackerhit); + TrackerHitExtended(const edm4hep::ConstTrackerHit trackerhit); ~TrackerHitExtended(); void setTrackExtended(TrackExtended * trackAR); void addTrackExtended(TrackExtended * trackAR); void setTrackerHitTo(TrackerHitExtended * hitTo); void setTrackerHitFrom(TrackerHitExtended * hitFrom); void setGenericDistance(float genericDistance); - //void setTrackerHit(edm4hep::TrackerHit* hit); + //void setTrackerHit(edm4hep::ConstTrackerHit hit); void setYresTo(float yresTo); void setYresFrom(float yresFrom); void setDirVec(float * dirVec); @@ -42,7 +42,7 @@ class TrackerHitExtended { void setDet(int idet); void setUsedInFit(bool usedInFit); - edm4hep::TrackerHit* getTrackerHit(); + edm4hep::ConstTrackerHit getTrackerHit(); TrackExtended * getTrackExtended(); TrackExtendedVec & getTrackExtendedVec(); TrackerHitExtended * getTrackerHitFrom(); @@ -59,7 +59,7 @@ class TrackerHitExtended { private: - edm4hep::TrackerHit _trackerHit; + edm4hep::ConstTrackerHit _trackerHit; TrackExtended * _trackAR; TrackerHitExtended * _hitTo; TrackerHitExtended * _hitFrom; diff --git a/Utilities/DataHelper/src/Navigation.cpp b/Utilities/DataHelper/src/Navigation.cpp index 4c220906aab7cc0db0226d74a8a5b1a70d0d77f5..f31eadbd5c87939c61aaa388c4bfe1ccf2098004 100644 --- a/Utilities/DataHelper/src/Navigation.cpp +++ b/Utilities/DataHelper/src/Navigation.cpp @@ -19,13 +19,13 @@ Navigation::~Navigation(){ void Navigation::Initialize(){ m_hitColVec.clear(); m_assColVec.clear(); - for(std::map<int, edm4hep::TrackerHit*>::iterator it=m_trkHits.begin();it!=m_trkHits.end();it++){ - delete it->second; + for(std::map<int, edm4hep::ConstTrackerHit>::iterator it=m_trkHits.begin();it!=m_trkHits.end();it++){ + // delete it->second; } m_trkHits.clear(); } -edm4hep::TrackerHit* Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, bool delete_by_caller){ +edm4hep::ConstTrackerHit Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, bool delete_by_caller){ int id = obj_id.collectionID * 10000000 + obj_id.index; if(!delete_by_caller){ if(m_trkHits.find(id)!=m_trkHits.end()) return m_trkHits[id]; @@ -47,7 +47,7 @@ edm4hep::TrackerHit* Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, edm4hep::ObjectID this_id = hit.getObjectID(); if(this_id.collectionID!=obj_id.collectionID)break; else if(this_id.index==obj_id.index){ - edm4hep::TrackerHit* hit_copy = new edm4hep::TrackerHit(hit); + edm4hep::ConstTrackerHit hit_copy = edm4hep::ConstTrackerHit(hit); if(!delete_by_caller) m_trkHits[id] = hit_copy; return hit_copy;//&(m_trkHits[id]); } diff --git a/Utilities/DataHelper/src/TrackExtended.cc b/Utilities/DataHelper/src/TrackExtended.cc index bd5444d7afe6a9df1233a2e6f8a01e904f3b6158..2c2d1412a8d23968af301373655048ce25d25a3d 100644 --- a/Utilities/DataHelper/src/TrackExtended.cc +++ b/Utilities/DataHelper/src/TrackExtended.cc @@ -11,7 +11,7 @@ TrackExtended::TrackExtended( ) { _group = NULL; } -TrackExtended::TrackExtended( Track * track) { +TrackExtended::TrackExtended(ConstTrack track) { _track = track; _superCluster = NULL; _trackerHitVector.clear(); @@ -32,7 +32,7 @@ TrackExtended::TrackExtended( TrackerHitExtended * trackerhit) { TrackExtended::~TrackExtended() {} -Track * TrackExtended::getTrack() { +ConstTrack TrackExtended::getTrack() { return _track; } diff --git a/Utilities/DataHelper/src/TrackHitPair.cc b/Utilities/DataHelper/src/TrackHitPair.cc new file mode 100755 index 0000000000000000000000000000000000000000..c9017241aa2417c85273b741b3664e8c80e52875 --- /dev/null +++ b/Utilities/DataHelper/src/TrackHitPair.cc @@ -0,0 +1,34 @@ +#include "DataHelper/TrackHitPair.h" + +TrackHitPair::TrackHitPair(TrackExtended * trkExt, TrackerHitExtended * hitExt, float distance) { + _trackExtended = trkExt; + _trackerHitExtended = hitExt; + _distance = distance; +} +TrackHitPair::~TrackHitPair() { + +} + +void TrackHitPair::setTrackExtended(TrackExtended * trkExt) { + _trackExtended = trkExt; +} + +void TrackHitPair::setTrackerHitExtended(TrackerHitExtended * hitExt) { + _trackerHitExtended = hitExt; +} + +void TrackHitPair::setDistance(float distance) { + _distance = distance; +} + +TrackExtended * TrackHitPair::getTrackExtended() { + return _trackExtended; +} + +TrackerHitExtended * TrackHitPair::getTrackerHitExtended() { + return _trackerHitExtended; +} + +float TrackHitPair::getDistance() { + return _distance; +} diff --git a/Utilities/DataHelper/src/TrackerHitExtended.cc b/Utilities/DataHelper/src/TrackerHitExtended.cc index d2169bf3661556d98c78899751e0c5c867d7b511..394ab2cff09736836b522a6a607cb64b589b0346 100644 --- a/Utilities/DataHelper/src/TrackerHitExtended.cc +++ b/Utilities/DataHelper/src/TrackerHitExtended.cc @@ -1,7 +1,7 @@ #include "DataHelper/TrackExtended.h" #include "DataHelper/TrackerHitExtended.h" -TrackerHitExtended::TrackerHitExtended(const edm4hep::TrackerHit& trackerhit): +TrackerHitExtended::TrackerHitExtended(const edm4hep::ConstTrackerHit trackerhit): _trackerHit(trackerhit){ _trackAR = NULL; _trackVecAR.clear(); @@ -41,7 +41,7 @@ void TrackerHitExtended::setGenericDistance(float genericDistance) { _genericDistance = genericDistance; } -//void TrackerHitExtended::setTrackerHit(edm4hep::TrackerHit * hit) { +//void TrackerHitExtended::setTrackerHit(edm4hep::ConstTrackerHit hit) { // _trackerHit = hit; //} @@ -67,8 +67,8 @@ void TrackerHitExtended::setDet(int idet) { _idet = idet; } -edm4hep::TrackerHit * TrackerHitExtended::getTrackerHit() { - return &_trackerHit; +edm4hep::ConstTrackerHit TrackerHitExtended::getTrackerHit() { + return _trackerHit; } TrackExtended * TrackerHitExtended::getTrackExtended() { diff --git a/Utilities/KalDet/kaldet/EXVKalDetector.h b/Utilities/KalDet/kaldet/EXVKalDetector.h index bb1e09cb113920577879dfa220d8017b8f5941ce..16e1d9269c06a463c4b9a26dbfb4f38bf254a1f9 100644 --- a/Utilities/KalDet/kaldet/EXVKalDetector.h +++ b/Utilities/KalDet/kaldet/EXVKalDetector.h @@ -34,8 +34,8 @@ class TNode; * * \deprecated EXVKalDetector */ -class EXVKalDetector : public TVKalDetector, public TAttDrawable { - //class EXVKalDetector : public TVKalDetector { +// class EXVKalDetector : public TVKalDetector, public TAttDrawable { +class EXVKalDetector : public TVKalDetector { public: EXVKalDetector(Double_t bField, Int_t m = 100); virtual ~EXVKalDetector(); diff --git a/Utilities/KalDet/kaldet/ILDConeMeasLayer.h b/Utilities/KalDet/kaldet/ILDConeMeasLayer.h index 00e9fb0611e760c211a854bbf55cf93b8f1ef25c..ba2138e05cda6176e0dab8bee5b4a33fcb1a7998 100644 --- a/Utilities/KalDet/kaldet/ILDConeMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDConeMeasLayer.h @@ -60,7 +60,7 @@ public: Bool_t IsOnSurface(const TVector3 &xx) const; /** Convert LCIO Tracker Hit to an ILDCylinderHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { /* streamlog_out( ERROR ) << "Don't use this, it's not implemented!"; */ return NULL; diff --git a/Utilities/KalDet/kaldet/ILDCylinderHit.h b/Utilities/KalDet/kaldet/ILDCylinderHit.h index 9dbe5b73ef225aa41f7b06cf54d5775166073da3..ca694e6eaf5353607a9f4b7ed8290ebc593317ba 100644 --- a/Utilities/KalDet/kaldet/ILDCylinderHit.h +++ b/Utilities/KalDet/kaldet/ILDCylinderHit.h @@ -17,7 +17,7 @@ public: /** Constructor Taking R and Rphi coordinates and associated measurement layer, with bfield */ ILDCylinderHit(const TVMeasLayer &ms, Double_t *x, Double_t *dx, - Double_t bfield, edm4hep::TrackerHit* trkhit ) + Double_t bfield, edm4hep::ConstTrackerHit trkhit ) : ILDVTrackHit(ms, x, dx, bfield, 2, trkhit) { /* no op */ } diff --git a/Utilities/KalDet/kaldet/ILDCylinderMeasLayer.h b/Utilities/KalDet/kaldet/ILDCylinderMeasLayer.h index 04740cc81edde2029bc347dc50a481001a2f2740..fd408f0887c9c57911b79ae8f5be620030bca515 100644 --- a/Utilities/KalDet/kaldet/ILDCylinderMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDCylinderMeasLayer.h @@ -71,7 +71,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDCylinderHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Get the intersection and the CellID, needed for multilayers */ virtual int getIntersectionAndCellID(const TVTrack &hel, diff --git a/Utilities/KalDet/kaldet/ILDDiscMeasLayer.h b/Utilities/KalDet/kaldet/ILDDiscMeasLayer.h index fe3ff82672144da1330120ebe3a8a26d56ae21d4..a4e2f38775c504f0cf8b9221858a3cfe8cfc0667 100644 --- a/Utilities/KalDet/kaldet/ILDDiscMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDDiscMeasLayer.h @@ -70,7 +70,7 @@ public: /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Check if global point is on surface */ inline virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/kaldet/ILDParallelPlanarStripMeasLayer.h b/Utilities/KalDet/kaldet/ILDParallelPlanarStripMeasLayer.h index c717f4c13a37397762a9aaf6d63980d8e0dfe61c..8ecf1e0cc02795c390c7052e3472a90c60b9c2f7 100644 --- a/Utilities/KalDet/kaldet/ILDParallelPlanarStripMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDParallelPlanarStripMeasLayer.h @@ -50,7 +50,7 @@ public: void CalcDhDa(const TVTrackHit &vht, const TVector3 &xxv, const TKalMatrix &dxphiada, TKalMatrix &H) const; - ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const; + ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const; private: diff --git a/Utilities/KalDet/kaldet/ILDPlanarHit.h b/Utilities/KalDet/kaldet/ILDPlanarHit.h index e54f0cf7e053dda87041fd4d9e80fc010b5787fa..a3cb42c0ef86d7accf3de68e2f1722c228a20f9b 100644 --- a/Utilities/KalDet/kaldet/ILDPlanarHit.h +++ b/Utilities/KalDet/kaldet/ILDPlanarHit.h @@ -21,7 +21,7 @@ public: Double_t *x, Double_t *dx, Double_t bfield, - edm4hep::TrackerHit* trkhit) + edm4hep::ConstTrackerHit trkhit) : ILDVTrackHit(ms, x, dx, bfield, ILDPlanarHit_DIM,trkhit) { /* no op */ } diff --git a/Utilities/KalDet/kaldet/ILDPlanarMeasLayer.h b/Utilities/KalDet/kaldet/ILDPlanarMeasLayer.h index 500f2a233093f6409eb3428fa1f23b82bb45c95b..45f93877b7551743d8c9f22c962482e3719e74ca 100644 --- a/Utilities/KalDet/kaldet/ILDPlanarMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDPlanarMeasLayer.h @@ -63,7 +63,7 @@ public: const TKalMatrix &dxphiada, TKalMatrix &H) const; - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/kaldet/ILDPlanarStripHit.h b/Utilities/KalDet/kaldet/ILDPlanarStripHit.h index 1103eeda84a5e6729d204ac6385a11b5de909ac3..30d5686427ae6ea539296087e08513c439089b61 100644 --- a/Utilities/KalDet/kaldet/ILDPlanarStripHit.h +++ b/Utilities/KalDet/kaldet/ILDPlanarStripHit.h @@ -22,7 +22,7 @@ public: Double_t *x, Double_t *dx, Double_t bfield, - edm4hep::TrackerHit* trkhit) + edm4hep::ConstTrackerHit trkhit) : ILDVTrackHit(ms, x, dx, bfield, ILDPlanarStripHit_DIM,trkhit) { /* no op */ } diff --git a/Utilities/KalDet/kaldet/ILDPolygonBarrelMeasLayer.h b/Utilities/KalDet/kaldet/ILDPolygonBarrelMeasLayer.h index 684bb876e7e0be4e48381ca59528c9871b6ffb1d..16fa5320075807f8edc2973cd8f5df3e7c28501d 100644 --- a/Utilities/KalDet/kaldet/ILDPolygonBarrelMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDPolygonBarrelMeasLayer.h @@ -70,7 +70,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** overloaded version of CalcXingPointWith using closed solution*/ virtual Int_t CalcXingPointWith(const TVTrack &hel, diff --git a/Utilities/KalDet/kaldet/ILDRotatedTrapMeaslayer.h b/Utilities/KalDet/kaldet/ILDRotatedTrapMeaslayer.h index 8cb7e4e07bd142df53533ca42b88333a818327d1..dce3303b34e0217a42206343d35dfbc112de4faa 100644 --- a/Utilities/KalDet/kaldet/ILDRotatedTrapMeaslayer.h +++ b/Utilities/KalDet/kaldet/ILDRotatedTrapMeaslayer.h @@ -57,7 +57,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Check if global point is on surface */ inline virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/kaldet/ILDSegmentedDiscMeasLayer.h b/Utilities/KalDet/kaldet/ILDSegmentedDiscMeasLayer.h index 6133570279f935d889f3e5ed76f3f51ed2f1205b..6afdc9f85b5c0e488a650318fb51c975a041cdba 100644 --- a/Utilities/KalDet/kaldet/ILDSegmentedDiscMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDSegmentedDiscMeasLayer.h @@ -77,7 +77,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** overloaded version of CalcXingPointWith using closed solution*/ virtual Int_t CalcXingPointWith(const TVTrack &hel, diff --git a/Utilities/KalDet/kaldet/ILDSegmentedDiscStripMeasLayer.h b/Utilities/KalDet/kaldet/ILDSegmentedDiscStripMeasLayer.h index 8bdab6686dcc7ba6d2ac04bcc3e7a7eae1dc84b8..34a3b203da119416ab304385ac8d640c6b573c8c 100644 --- a/Utilities/KalDet/kaldet/ILDSegmentedDiscStripMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDSegmentedDiscStripMeasLayer.h @@ -67,7 +67,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; private: diff --git a/Utilities/KalDet/kaldet/ILDVMeasLayer.h b/Utilities/KalDet/kaldet/ILDVMeasLayer.h index 3d213b3aadcc3f5c3b4ff693462ff2e746e22f53..498c5608c5753764d821da93748d32fe365601ce 100644 --- a/Utilities/KalDet/kaldet/ILDVMeasLayer.h +++ b/Utilities/KalDet/kaldet/ILDVMeasLayer.h @@ -13,6 +13,7 @@ #include "kaltest/TAttDrawable.h" #include "kaltest/KalTrackDim.h" #include "TString.h" +#include "edm4hep/TrackerHitConst.h" #include <vector> @@ -43,7 +44,7 @@ public: inline Double_t GetBz() const { return _Bz; } /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const = 0 ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const = 0 ; /** Check whether the measurement layer represents a series of detector elements */ bool isMultilayer() const { return _isMultiLayer; } diff --git a/Utilities/KalDet/kaldet/ILDVTrackHit.h b/Utilities/KalDet/kaldet/ILDVTrackHit.h index d47be083ee5e2bc1a8871d8ba1578301e8b352f1..89aa42f246a566dfbd79a0be41bd83444fc35a34 100644 --- a/Utilities/KalDet/kaldet/ILDVTrackHit.h +++ b/Utilities/KalDet/kaldet/ILDVTrackHit.h @@ -19,15 +19,15 @@ public: /** Constructor Taking coordinates and associated measurement layer, with bfield and number of measurement dimentions*/ ILDVTrackHit(const TVMeasLayer &ms, Double_t *x, Double_t *dx, - Double_t bfield , Int_t dim, edm4hep::TrackerHit* trkhit) + Double_t bfield , Int_t dim, edm4hep::ConstTrackerHit trkhit) : TVTrackHit(ms, x, dx, bfield, dim), _trkhit(trkhit) { /* no op */ } - edm4hep::TrackerHit* getLCIOTrackerHit() const { return _trkhit; } + edm4hep::ConstTrackerHit getLCIOTrackerHit() const { return _trkhit; } private: - edm4hep::TrackerHit* _trkhit; + edm4hep::ConstTrackerHit _trkhit; }; #endif diff --git a/Utilities/KalDet/src/ild/common/ILDConeMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDConeMeasLayer.h index 00e9fb0611e760c211a854bbf55cf93b8f1ef25c..ba2138e05cda6176e0dab8bee5b4a33fcb1a7998 100644 --- a/Utilities/KalDet/src/ild/common/ILDConeMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDConeMeasLayer.h @@ -60,7 +60,7 @@ public: Bool_t IsOnSurface(const TVector3 &xx) const; /** Convert LCIO Tracker Hit to an ILDCylinderHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { /* streamlog_out( ERROR ) << "Don't use this, it's not implemented!"; */ return NULL; diff --git a/Utilities/KalDet/src/ild/common/ILDCylinderHit.h b/Utilities/KalDet/src/ild/common/ILDCylinderHit.h index 9dbe5b73ef225aa41f7b06cf54d5775166073da3..ca694e6eaf5353607a9f4b7ed8290ebc593317ba 100644 --- a/Utilities/KalDet/src/ild/common/ILDCylinderHit.h +++ b/Utilities/KalDet/src/ild/common/ILDCylinderHit.h @@ -17,7 +17,7 @@ public: /** Constructor Taking R and Rphi coordinates and associated measurement layer, with bfield */ ILDCylinderHit(const TVMeasLayer &ms, Double_t *x, Double_t *dx, - Double_t bfield, edm4hep::TrackerHit* trkhit ) + Double_t bfield, edm4hep::ConstTrackerHit trkhit ) : ILDVTrackHit(ms, x, dx, bfield, 2, trkhit) { /* no op */ } diff --git a/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.cc index 72cb1119747490f57a2ccc61b116108d051c2e76..fc41a5e1d110615037c5a355d535947f55c2c240 100644 --- a/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.cc @@ -2,6 +2,8 @@ * * @author S.Aplin DESY */ + + #include "kaltest/TKalTrack.h" #include "ILDCylinderMeasLayer.h" @@ -108,13 +110,13 @@ void ILDCylinderMeasLayer::CalcDhDa(const TVTrackHit &vht, // tracker hit not us /** Convert LCIO Tracker Hit to an ILDCylinderHit */ -ILDVTrackHit* ILDCylinderMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { - if ( ! trkhit) { +ILDVTrackHit* ILDCylinderMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { + if ( ! trkhit.isAvailable() ) { // streamlog_out(ERROR) << "ILDCylinderMeasLayer::ConvertLCIOTrkHit trkhit pointer is NULL" << std::endl; return NULL; } - const edm4hep::Vector3d& pos = trkhit->getPosition(); + const edm4hep::Vector3d& pos = trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z) ; //SJA:FIXME: this assumes that the cylinder is centred at 0,0 @@ -129,16 +131,16 @@ ILDVTrackHit* ILDCylinderMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhi //EVENT::TrackerHitZCylinder* cylinder_hit = dynamic_cast<EVENT::TrackerHitZCylinder*>( trkhit ) ; - if(trkhit->getType()==16){ + if(trkhit.getType()==16){ //if(cylinder_hit){ // convert errors - dx[0] = trkhit->getCovMatrix(0); - dx[1] = trkhit->getCovMatrix(1); + dx[0] = trkhit.getCovMatrix(0); + dx[1] = trkhit.getCovMatrix(1); } else { // convert errors - dx[0] = sqrt(trkhit->getCovMatrix(0) + trkhit->getCovMatrix(2)) ; - dx[1] = sqrt(trkhit->getCovMatrix(5)); + dx[0] = sqrt(trkhit.getCovMatrix(0) + trkhit.getCovMatrix(2)) ; + dx[1] = sqrt(trkhit.getCovMatrix(5)); } diff --git a/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.h index 04740cc81edde2029bc347dc50a481001a2f2740..fd408f0887c9c57911b79ae8f5be620030bca515 100644 --- a/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDCylinderMeasLayer.h @@ -71,7 +71,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDCylinderHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Get the intersection and the CellID, needed for multilayers */ virtual int getIntersectionAndCellID(const TVTrack &hel, diff --git a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc index d8d476fc30abc2b30711a4cbce25f03104fc28aa..d0c0dad4758955b35b580b8ee21e0d71d77c9fff 100644 --- a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.cc @@ -207,19 +207,19 @@ Bool_t ILDDiscMeasLayer::IsOnSurface(const TVector3 &xx) const } -ILDVTrackHit* ILDDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { //edm4hep::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; //edm4hep::TrackerHitPlane* plane_hit = trkhit; - if((trkhit->getType()&8)!=8) return NULL; + if(trkhit.getType()!=8) return NULL; - //edm4hep::TrackerHit* plane_hit = trkhit; + //edm4hep::ConstTrackerHit plane_hit = trkhit; //if( plane_hit == NULL ) return NULL; // SJA:FIXME: should be replaced with an exception - //gear::Vector3D U(1.0,plane_hit->getU()[1],plane_hit->getU()[0],gear::Vector3D::spherical); - //gear::Vector3D V(1.0,plane_hit->getV()[1],plane_hit->getV()[0],gear::Vector3D::spherical); - gear::Vector3D U(1.0,trkhit->getCovMatrix(1),trkhit->getCovMatrix(0),gear::Vector3D::spherical); - gear::Vector3D V(1.0,trkhit->getCovMatrix(5),trkhit->getCovMatrix(4),gear::Vector3D::spherical); + //gear::Vector3D U(1.0,plane_hit.getU()[1],plane_hit.getU()[0],gear::Vector3D::spherical); + //gear::Vector3D V(1.0,plane_hit.getV()[1],plane_hit.getV()[0],gear::Vector3D::spherical); + gear::Vector3D U(1.0,trkhit.getCovMatrix(1),trkhit.getCovMatrix(0),gear::Vector3D::spherical); + gear::Vector3D V(1.0,trkhit.getCovMatrix(5),trkhit.getCovMatrix(4),gear::Vector3D::spherical); gear::Vector3D X(1.0,0.0,0.0); gear::Vector3D Y(0.0,1.0,0.0); @@ -236,7 +236,7 @@ ILDVTrackHit* ILDDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) c exit(1); } - const edm4hep::Vector3d& pos=trkhit->getPosition(); + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z); // convert to layer coordinates @@ -248,10 +248,10 @@ ILDVTrackHit* ILDDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) c x[0] = h(0, 0); x[1] = h(1, 0); - //dx[0] = plane_hit->getdU() ; - //dx[1] = plane_hit->getdV() ; - dx[0] = trkhit->getCovMatrix(2); - dx[1] = trkhit->getCovMatrix(5); + //dx[0] = plane_hit.getdU() ; + //dx[1] = plane_hit.getdV() ; + dx[0] = trkhit.getCovMatrix(2); + dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); diff --git a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.h index fe3ff82672144da1330120ebe3a8a26d56ae21d4..a4e2f38775c504f0cf8b9221858a3cfe8cfc0667 100644 --- a/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDDiscMeasLayer.h @@ -70,7 +70,7 @@ public: /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Check if global point is on surface */ inline virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.cc index b7064d810dd30f5dd559f3769f58fff65b29a408..f2959c96e2dc6f38b0cd788ac7b34e5fe06938e3 100644 --- a/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.cc @@ -162,11 +162,11 @@ void ILDParallelPlanarStripMeasLayer::CalcDhDa(const TVTrackHit &vht, } -ILDVTrackHit* ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; - //if( plane_hit == NULL ) { - if((trkhit->getType()&8)!=8) { + if((trkhit.getType()&8)!=8) { + //if( plane_hit == NULL ) { std::cout << "ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit dynamic_cast to ILDPlanarStripHit failed " << std::endl; throw std::logic_error("Invalid invoke ILDParallelPlanarStripMeasLayer by TrackerHit trkhit"); } @@ -174,8 +174,8 @@ ILDVTrackHit* ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit(edm4hep::Tracke // remember here the "position" of the hit in fact defines the origin of the plane it defines so u and v are per definition 0. // this is still the case for a 1-dimentional measurement, and is then used to calculate the u coordinate according to the origin of the actual measurement plane. - //const TVector3 hit( plane_hit->getPosition()[0], plane_hit->getPosition()[1], plane_hit->getPosition()[2]) ; - const edm4hep::Vector3d& pos=trkhit->getPosition(); + //const TVector3 hit( plane_hit.getPosition()[0], plane_hit.getPosition()[1], plane_hit.getPosition()[2]) ; + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z); // convert to layer coordinates @@ -188,15 +188,15 @@ ILDVTrackHit* ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit(edm4hep::Tracke x[0] = h(0, 0); if(ILDPlanarStripHit_DIM == 2) x[1] = h(1, 0); - //dx[0] = plane_hit->getdU() ; - //if(ILDPlanarStripHit_DIM == 2) dx[1] = plane_hit->getdV() ; - dx[0] = trkhit->getCovMatrix(2); - if(ILDPlanarStripHit_DIM == 2) dx[1] = trkhit->getCovMatrix(5); + //dx[0] = plane_hit.getdU() ; + //if(ILDPlanarStripHit_DIM == 2) dx[1] = plane_hit.getdV() ; + dx[0] = trkhit.getCovMatrix(2); + if(ILDPlanarStripHit_DIM == 2) dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); /* std::cout << "ILDParallelPlanarStripMeasLayer::ConvertLCIOTrkHit ILDPlanarStripHit created" - << " for CellID " << trkhit->getCellID() + << " for CellID " << trkhit.getCellID() << " Layer R = " << this->GetXc().Perp() << " Layer phi = " << this->GetXc().Phi() << " Layer z0 = " << this->GetXc().Z() diff --git a/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.h index c717f4c13a37397762a9aaf6d63980d8e0dfe61c..8ecf1e0cc02795c390c7052e3472a90c60b9c2f7 100644 --- a/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDParallelPlanarStripMeasLayer.h @@ -50,7 +50,7 @@ public: void CalcDhDa(const TVTrackHit &vht, const TVector3 &xxv, const TKalMatrix &dxphiada, TKalMatrix &H) const; - ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const; + ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const; private: diff --git a/Utilities/KalDet/src/ild/common/ILDPlanarHit.h b/Utilities/KalDet/src/ild/common/ILDPlanarHit.h index e54f0cf7e053dda87041fd4d9e80fc010b5787fa..a3cb42c0ef86d7accf3de68e2f1722c228a20f9b 100644 --- a/Utilities/KalDet/src/ild/common/ILDPlanarHit.h +++ b/Utilities/KalDet/src/ild/common/ILDPlanarHit.h @@ -21,7 +21,7 @@ public: Double_t *x, Double_t *dx, Double_t bfield, - edm4hep::TrackerHit* trkhit) + edm4hep::ConstTrackerHit trkhit) : ILDVTrackHit(ms, x, dx, bfield, ILDPlanarHit_DIM,trkhit) { /* no op */ } diff --git a/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.cc index ad196d2e6bbefe4ec76f572264ba1b1dd8f2e620..d0b30b969e2fea0070b8641ff420f83ba9afda6f 100644 --- a/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.cc @@ -244,19 +244,19 @@ Bool_t ILDPlanarMeasLayer::IsOnSurface(const TVector3 &xx) const } -ILDVTrackHit* ILDPlanarMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { - //std::cout << "ILDPlanarMeasLayer::ConvertLCIOTrkHit " << trkhit << " type=" << trkhit->getType() << std::endl; +ILDVTrackHit* ILDPlanarMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { + //std::cout << "ILDPlanarMeasLayer::ConvertLCIOTrkHit " << trkhit << " type=" << trkhit.getType() << std::endl; //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; - if((trkhit->getType()&8)!=8){ - std::cout << "ILDPlanarMeasLayer::ConvertLCIOTrkHit Warning: type is not 8, but " << (trkhit->getType()&8) << std::endl; + if((trkhit.getType()&8)!=8){ + std::cout << "ILDPlanarMeasLayer::ConvertLCIOTrkHit Warning: type is not 8, but " << (trkhit.getType()&8) << std::endl; return NULL; } //if( plane_hit == NULL ) return NULL; // SJA:FIXME: should be replaced with an exception - //gear::Vector3D U(1.0,plane_hit->getU()[1],plane_hit->getU()[0],gear::Vector3D::spherical); - //gear::Vector3D V(1.0,plane_hit->getV()[1],plane_hit->getV()[0],gear::Vector3D::spherical); - gear::Vector3D U(1.0,trkhit->getCovMatrix(1),trkhit->getCovMatrix(0),gear::Vector3D::spherical); - gear::Vector3D V(1.0,trkhit->getCovMatrix(4),trkhit->getCovMatrix(3),gear::Vector3D::spherical); + //gear::Vector3D U(1.0,plane_hit.getU()[1],plane_hit.getU()[0],gear::Vector3D::spherical); + //gear::Vector3D V(1.0,plane_hit.getV()[1],plane_hit.getV()[0],gear::Vector3D::spherical); + gear::Vector3D U(1.0,trkhit.getCovMatrix(1),trkhit.getCovMatrix(0),gear::Vector3D::spherical); + gear::Vector3D V(1.0,trkhit.getCovMatrix(4),trkhit.getCovMatrix(3),gear::Vector3D::spherical); gear::Vector3D Z(0.0,0.0,1.0); const float eps = 1.0e-07; @@ -272,7 +272,7 @@ ILDVTrackHit* ILDPlanarMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) } // remember here the "position" of the hit in fact defines the origin of the plane it defines so u and v are per definition 0. - const edm4hep::Vector3d& pos=trkhit->getPosition(); + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z) ; // convert to layer coordinates @@ -284,13 +284,13 @@ ILDVTrackHit* ILDPlanarMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) x[0] = h(0, 0); x[1] = h(1, 0); - dx[0] = trkhit->getCovMatrix(2); - dx[1] = trkhit->getCovMatrix(5); + dx[0] = trkhit.getCovMatrix(2); + dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); /* std::cout << "ILDPlanarMeasLayer::ConvertLCIOTrkHit ILDPlanarHit created" - << " for CellID " << trkhit->getCellID() + << " for CellID " << trkhit.getCellID() << " Layer R = " << this->GetXc().Perp() << " Layer phi = " << this->GetXc().Phi() << " Layer z0 = " << this->GetXc().Z() diff --git a/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.h index 500f2a233093f6409eb3428fa1f23b82bb45c95b..45f93877b7551743d8c9f22c962482e3719e74ca 100644 --- a/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDPlanarMeasLayer.h @@ -63,7 +63,7 @@ public: const TKalMatrix &dxphiada, TKalMatrix &H) const; - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/src/ild/common/ILDPlanarStripHit.h b/Utilities/KalDet/src/ild/common/ILDPlanarStripHit.h index 1103eeda84a5e6729d204ac6385a11b5de909ac3..30d5686427ae6ea539296087e08513c439089b61 100644 --- a/Utilities/KalDet/src/ild/common/ILDPlanarStripHit.h +++ b/Utilities/KalDet/src/ild/common/ILDPlanarStripHit.h @@ -22,7 +22,7 @@ public: Double_t *x, Double_t *dx, Double_t bfield, - edm4hep::TrackerHit* trkhit) + edm4hep::ConstTrackerHit trkhit) : ILDVTrackHit(ms, x, dx, bfield, ILDPlanarStripHit_DIM,trkhit) { /* no op */ } diff --git a/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.cc index c1348fd0fdfd875f91901675ef0c964c3f403334..aeef051c2de4be5dc9bdb0e97fb0a31c3f3dbeb0 100644 --- a/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.cc @@ -136,9 +136,9 @@ Bool_t ILDPolygonBarrelMeasLayer::IsOnSurface(const TVector3 &xx) const } -ILDVTrackHit* ILDPolygonBarrelMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDPolygonBarrelMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { - std::cout << "ILDPolygonBarrelMeasLayer::ConvertLCIOTrkHit Not implemented: exit(1) called from " << __FILE__ << " line " << __LINE__ << std::endl; + // streamlog_out(ERROR) << "ILDPolygonBarrelMeasLayer::ConvertLCIOTrkHit Not implemented: exit(1) called from " << __FILE__ << " line " << __LINE__ << std::endl; exit(1); } diff --git a/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.h index 684bb876e7e0be4e48381ca59528c9871b6ffb1d..16fa5320075807f8edc2973cd8f5df3e7c28501d 100644 --- a/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDPolygonBarrelMeasLayer.h @@ -70,7 +70,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** overloaded version of CalcXingPointWith using closed solution*/ virtual Int_t CalcXingPointWith(const TVTrack &hel, diff --git a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc index c9f855e0bbd9c0257b7501ea8ab0f85b58dcb08b..38b3b56fb7d640512d5307a54515c2053be6d49c 100644 --- a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.cc @@ -155,12 +155,12 @@ Bool_t ILDRotatedTrapMeaslayer::IsOnSurface(const TVector3 &xx) const } -ILDVTrackHit* ILDRotatedTrapMeaslayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDRotatedTrapMeaslayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; - if(trkhit->getType()!=8) return NULL; + if(trkhit.getType()!=8) return NULL; //if( plane_hit == NULL ) return NULL; // SJA:FIXME: should be replaced with an exception - const edm4hep::Vector3d& pos=trkhit->getPosition(); + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z); // convert to layer coordinates @@ -172,8 +172,8 @@ ILDVTrackHit* ILDRotatedTrapMeaslayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* tr x[0] = h(0, 0); x[1] = h(1, 0); - dx[0] = trkhit->getCovMatrix(2); - dx[1] = trkhit->getCovMatrix(5); + dx[0] = trkhit.getCovMatrix(2); + dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); diff --git a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.h b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.h index 8cb7e4e07bd142df53533ca42b88333a818327d1..dce3303b34e0217a42206343d35dfbc112de4faa 100644 --- a/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.h +++ b/Utilities/KalDet/src/ild/common/ILDRotatedTrapMeaslayer.h @@ -57,7 +57,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** Check if global point is on surface */ inline virtual Bool_t IsOnSurface (const TVector3 &xx) const; diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc index 87cac85cb5b7cb15f1c72a4d57887199be03e437..9fca07c113ed80140bcca6ed6c29283ba873f3ef 100644 --- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.cc @@ -124,13 +124,14 @@ TKalMatrix ILDSegmentedDiscMeasLayer::XvToMv(const TVector3 &xv) const // // // mv(1,0) = xv.Y() ; - /* - std::cout << "\t ILDSegmentedDiscMeasLayer::XvToMv: " - << " x = " << xv.X() - << " y = " << xv.Y() - << " z = " << xv.Z() - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::XvToMv: " + // << " x = " << xv.X() + // << " y = " << xv.Y() + // << " z = " << xv.Z() + // << std::endl; + + // coordinate matrix to return TKalMatrix mv(ILDPlanarHit_DIM,1); @@ -165,23 +166,24 @@ TKalMatrix ILDSegmentedDiscMeasLayer::XvToMv(const TVector3 &xv) const double v = ( cos_theta * delta_y * cos_phi - cos_theta * delta_x * sin_phi) ; mv(1,0) = v ; - /* - std::cout << "\t ILDSegmentedDiscMeasLayer::XvToMv: phi_sensor = " << phi_sensor << " phi = " << phi << " sign_z = " << sign_z<< std::endl; - std::cout << "\t ILDSegmentedDiscMeasLayer::XvToMv: " - << " mv(0,0) = " << mv(0,0) - << " mv(1,0) = " << mv(1,0) - << std::endl; - */ + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::XvToMv: phi_sensor = " << phi_sensor << " phi = " << phi << " sign_z = " << sign_z<< std::endl; + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::XvToMv: " + // << " mv(0,0) = " << mv(0,0) + // << " mv(1,0) = " << mv(1,0) + // << std::endl; + return mv; } -TVector3 ILDSegmentedDiscMeasLayer::HitToXv(const TVTrackHit &vht) const { +TVector3 ILDSegmentedDiscMeasLayer::HitToXv(const TVTrackHit &vht) const +{ - //std::cout << "\t ILDSegmentedDiscMeasLayer::HitToXv: " - // << " vht(0,0) = " << vht(0,0) << " vht(1,0) = " << vht(1,0) << std::endl; + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::HitToXv: " + // << " vht(0,0) = " << vht(0,0) << " vht(1,0) = " << vht(1,0) << std::endl; const ILDPlanarHit &mv = dynamic_cast<const ILDPlanarHit &>(vht); @@ -191,8 +193,8 @@ TVector3 ILDSegmentedDiscMeasLayer::HitToXv(const TVTrackHit &vht) const { // double z = this->GetXc().Z() ; UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; - edm4hep::TrackerHit* hit = mv.getLCIOTrackerHit(); - encoder.setValue(hit->getCellID()); + edm4hep::ConstTrackerHit hit = mv.getLCIOTrackerHit(); + encoder.setValue(hit.getCellID()); int segmentIndex = encoder[lcio::ILDCellID0::module] / 2 ; @@ -223,13 +225,13 @@ TVector3 ILDSegmentedDiscMeasLayer::HitToXv(const TVTrackHit &vht) const { double y = delta_y + sensor_y0; double z = sensor_z0 ; - /* - std::cout << "\t ILDSegmentedDiscMeasLayer::HitToXv: " - << " x = " << x - << " y = " << y - << " z = " << z - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::HitToXv: " + // << " x = " << x + // << " y = " << y + // << " z = " << z + // << std::endl; + return TVector3(x,y,z); } @@ -282,20 +284,21 @@ void ILDSegmentedDiscMeasLayer::CalcDhDa(const TVTrackHit &vht, Int_t hdim = TMath::Max(5,sdim-1); // Set H = (@h/@a) = (@d/@a, @z/@a)^t - + + double dudx = cos_phi; double dudy = sin_phi; double dvdx = -cos_theta * sin_phi; double dvdy = cos_theta * cos_phi; - /* - std::cout << "\t ILDSegmentedDiscMeasLayer::CalcDhDa: " - << " dudx = " << dudx - << " dudy = " << dudy - << " dvdx = " << dvdx - << " dvdy = " << dvdy - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscMeasLayer::CalcDhDa: " + // << " dudx = " << dudx + // << " dudy = " << dudy + // << " dvdx = " << dvdx + // << " dvdy = " << dvdy + // << std::endl; + for (Int_t i=0; i<hdim; i++) { H(0,i) = dudx * dxphiada(0,i) + dudy * dxphiada(1,i) ; @@ -308,6 +311,18 @@ void ILDSegmentedDiscMeasLayer::CalcDhDa(const TVTrackHit &vht, H(1,sdim-1) = 0.; } + + + + + + + + + + + + } @@ -480,19 +495,16 @@ Bool_t ILDSegmentedDiscMeasLayer::IsOnSurface(const TVector3 &xx) const } -ILDVTrackHit* ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; + if(trkhit.getType()!=8) { //if( plane_hit == NULL ) { // streamlog_out(ERROR) << "ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit dynamic_cast to TrackerHitPlane failed " << std::endl; - //return NULL; // SJA:FIXME: should be replaced with an exception - //} - if((trkhit->getType()&8)!=8) { - std::cout << "ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit dynamic_cast to ILDPlanarHit failed " << std::endl; - throw std::logic_error("Invalid invoke ILDSegmentedDiscMeasLayer by TrackerHit trkhit"); + return NULL; // SJA:FIXME: should be replaced with an exception } // remember here the "position" of the hit in fact defines the origin of the plane it defines so u and v are per definition 0. - const edm4hep::Vector3d& pos=trkhit->getPosition(); + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos.x, pos.y, pos.z) ; // convert to layer coordinates @@ -506,23 +518,23 @@ ILDVTrackHit* ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* x[0] = h(0, 0); x[1] = h(1, 0); - dx[0] = trkhit->getCovMatrix(2); - dx[1] = trkhit->getCovMatrix(5); + dx[0] = trkhit.getCovMatrix(2); + dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); - /* - std::cout << "ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit: ILDPlanarHit created" - << " for CellID " << trkhit->getCellID() - << " u = " << x[0] - << " v = " << x[1] - << " du = " << dx[0] - << " dv = " << dx[1] - << " x = " << pos.x - << " y = " << pos.y - << " z = " << pos.z - << " onSurface = " << hit_on_surface - << std::endl ; - */ + + // streamlog_out(DEBUG1) << "ILDSegmentedDiscMeasLayer::ConvertLCIOTrkHit: ILDPlanarHit created" + // << " for CellID " << trkhit.getCellID() + // << " u = " << x[0] + // << " v = " << x[1] + // << " du = " << dx[0] + // << " dv = " << dx[1] + // << " x = " << pos.x + // << " y = " << pos.y + // << " z = " << pos.z + // << " onSurface = " << hit_on_surface + // << std::endl ; + ILDPlanarHit hh( *this , x, dx, this->GetBz(),trkhit); this->HitToXv(hh); diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.h index 6133570279f935d889f3e5ed76f3f51ed2f1205b..6afdc9f85b5c0e488a650318fb51c975a041cdba 100644 --- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscMeasLayer.h @@ -77,7 +77,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; /** overloaded version of CalcXingPointWith using closed solution*/ virtual Int_t CalcXingPointWith(const TVTrack &hel, diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc index 590032d20c53e5c4fc058f32293f6a4b88fa751a..e547982b16df06eaba009e0b89ff2a9960549f26 100644 --- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc +++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.cc @@ -27,13 +27,13 @@ TKalMatrix ILDSegmentedDiscStripMeasLayer::XvToMv(const TVector3 &xv) const { // Calculate measurement vector (hit coordinates) from global coordinates: - /* - std::cout << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: " - << " x = " << xv.X() - << " y = " << xv.Y() - << " z = " << xv.Z() - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: " + // << " x = " << xv.X() + // << " y = " << xv.Y() + // << " z = " << xv.Z() + // << std::endl; + // let's start with the sensor whose axis of symmetry is // aligned with the y-axis and whose sensitive face is facing towards the IP. // For a zero strip angle then: @@ -87,34 +87,36 @@ TKalMatrix ILDSegmentedDiscStripMeasLayer::XvToMv(const TVector3 &xv) const mv(1,0) = v ; } - /* - std::cout << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: phi_sensor = " << phi_sensor << " phi = " << phi << " stripAngle = " << _stripAngle << " sign_z = " << sign_z<< std::endl; - std::cout << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: " - << " mv(0,0) = " << mv(0,0) ; - if (ILDPlanarStripHit_DIM == 2) { - std::cout << " mv(1,0) = " << mv(1,0); - } - std::cout << std::endl; - */ + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: phi_sensor = " << phi_sensor << " phi = " << phi << " stripAngle = " << _stripAngle << " sign_z = " << sign_z<< std::endl; + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::XvToMv: " + // << " mv(0,0) = " << mv(0,0) ; + // if (ILDPlanarStripHit_DIM == 2) { + // streamlog_out(DEBUG0) << " mv(1,0) = " << mv(1,0); + // } + // streamlog_out(DEBUG0) << std::endl; + return mv; } -TVector3 ILDSegmentedDiscStripMeasLayer::HitToXv(const TVTrackHit &vht) const { - /* - std::cout << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: " - << " vht(0,0) = " << vht(0,0); - if (ILDPlanarStripHit_DIM == 2) { - std::cout << " vht(1,0) = " << vht(1,0); - } - std::cout << std::endl; - */ +TVector3 ILDSegmentedDiscStripMeasLayer::HitToXv(const TVTrackHit &vht) const +{ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: " + // << " vht(0,0) = " << vht(0,0); + // if (ILDPlanarStripHit_DIM == 2) { + // streamlog_out(DEBUG0) << " vht(1,0) = " << vht(1,0); + // } + // streamlog_out(DEBUG0) << std::endl; + + const ILDPlanarStripHit &mv = dynamic_cast<const ILDPlanarStripHit &>(vht); UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; - edm4hep::TrackerHit* hit = mv.getLCIOTrackerHit(); - encoder.setValue(hit->getCellID()); + edm4hep::ConstTrackerHit hit = mv.getLCIOTrackerHit(); + encoder.setValue(hit.getCellID()); int segmentIndex = encoder[lcio::ILDCellID0::module] / 2 ; @@ -124,7 +126,7 @@ TVector3 ILDSegmentedDiscStripMeasLayer::HitToXv(const TVTrackHit &vht) const { double sensor_y0 = XC.Y(); double sensor_z0 = XC.Z(); - ////std::cout << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: segmentIndex = " << segmentIndex << " x0 = " << sensor_x0 << " y0 = " << sensor_y0 << " z0 = " << sensor_z0 << " segment Phi = " << XC.Phi() << std::endl; +// streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: segmentIndex = " << segmentIndex << " x0 = " << sensor_x0 << " y0 = " << sensor_y0 << " z0 = " << sensor_z0 << " segment Phi = " << XC.Phi() << std::endl; // here we are assuming that there is no offset of the centre of the sensor in the x-y plane. // SJA:FIXME: We need to get the segment we are in to get phi @@ -159,13 +161,14 @@ TVector3 ILDSegmentedDiscStripMeasLayer::HitToXv(const TVTrackHit &vht) const { double y = delta_y + sensor_y0; double z = sensor_z0 ; - /* - std::cout << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: " - << " x = " << x - << " y = " << y - << " z = " << z - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::HitToXv: " + // << " x = " << x + // << " y = " << y + // << " z = " << z + // << std::endl; + + return TVector3(x,y,z); } @@ -210,14 +213,14 @@ void ILDSegmentedDiscStripMeasLayer::CalcDhDa(const TVTrackHit &vht, double dvdx = -cos_theta * sin_phi; double dvdy = cos_theta * cos_phi; - /* - std::cout << "\t ILDSegmentedDiscStripMeasLayer::CalcDhDa: " - << " dudx = " << dudx - << " dudy = " << dudy - << " dvdx = " << dvdx - << " dvdy = " << dvdy - << std::endl; - */ + + // streamlog_out(DEBUG0) << "\t ILDSegmentedDiscStripMeasLayer::CalcDhDa: " + // << " dudx = " << dudx + // << " dudy = " << dudy + // << " dvdx = " << dvdx + // << " dvdy = " << dvdy + // << std::endl; + for (Int_t i=0; i<hdim; i++) { H(0,i) = dudx * dxphiada(0,i) + dudy * dxphiada(1,i) ; @@ -239,21 +242,18 @@ void ILDSegmentedDiscStripMeasLayer::CalcDhDa(const TVTrackHit &vht, -ILDVTrackHit* ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const { +ILDVTrackHit* ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const { //EVENT::TrackerHitPlane* plane_hit = dynamic_cast<EVENT::TrackerHitPlane*>( trkhit ) ; + if(trkhit.getType()!=8){ //if( plane_hit == NULL ) { // streamlog_out(ERROR) << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit dynamic_cast to TrackerHitPlane failed " << std::endl; - //return NULL; // SJA:FIXME: should be replaced with an exception - //} - if((trkhit->getType()&8)!=8) { - std::cout << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit dynamic_cast to ILDPlanarStripHit failed " << std::endl; - throw std::logic_error("Invalid invoke ILDSegmentedDiscStripMeasLayer by TrackerHit trkhit"); + return NULL; // SJA:FIXME: should be replaced with an exception } // remember here the "position" of the hit in fact defines the origin of the plane it defines so u and v are per definition 0. // this is still the case for a 1-dimentional measurement, and is then used to calculate the u coordinate according to the origin of the actual measurement plane. - const edm4hep::Vector3d& pos=trkhit->getPosition(); + const edm4hep::Vector3d& pos=trkhit.getPosition(); const TVector3 hit(pos[0], pos[1], pos[2]) ; // convert to layer coordinates @@ -267,26 +267,26 @@ ILDVTrackHit* ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit(edm4hep::Tracker x[0] = h(0, 0); if(ILDPlanarStripHit_DIM == 2) x[1] = h(1, 0); - dx[0] = trkhit->getCovMatrix(2); - if(ILDPlanarStripHit_DIM == 2) dx[1] = trkhit->getCovMatrix(5); + dx[0] = trkhit.getCovMatrix(2); + if(ILDPlanarStripHit_DIM == 2) dx[1] = trkhit.getCovMatrix(5); bool hit_on_surface = IsOnSurface(hit); - /* - std::cout << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit ILDPlanarStripHit created" - << " for CellID " << trkhit->getCellID() - << " Disc Z = " << this->GetXc().Z() - << " u = " << x[0] - << " du = " << dx[0]; - - if(ILDPlanarStripHit_DIM == 2) std::cout << " v = " << x[1] << " dv = " << dx[1]; - - std::cout << " x = " << hit.x() - << " y = " << hit.y() - << " z = " << hit.z() - << " r = " << hit.Perp() - << " onSurface = " << hit_on_surface - << std::endl ; - */ + + // streamlog_out(DEBUG1) << "ILDSegmentedDiscStripMeasLayer::ConvertLCIOTrkHit ILDPlanarStripHit created" + // << " for CellID " << trkhit.getCellID() + // << " Disc Z = " << this->GetXc().Z() + // << " u = " << x[0] + // << " du = " << dx[0]; + + // if(ILDPlanarStripHit_DIM == 2) streamlog_out(DEBUG1) << " v = " << x[1] << " dv = " << dx[1]; + + // streamlog_out(DEBUG1) << " x = " << hit.x() + // << " y = " << hit.y() + // << " z = " << hit.z() + // << " r = " << hit.Perp() + // << " onSurface = " << hit_on_surface + // << std::endl ; + ILDPlanarStripHit hh( *this , x, dx, this->GetBz(),trkhit); this->HitToXv(hh); diff --git a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.h index 8bdab6686dcc7ba6d2ac04bcc3e7a7eae1dc84b8..34a3b203da119416ab304385ac8d640c6b573c8c 100644 --- a/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDSegmentedDiscStripMeasLayer.h @@ -67,7 +67,7 @@ public: TKalMatrix &H) const; /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const ; private: diff --git a/Utilities/KalDet/src/ild/common/ILDVMeasLayer.h b/Utilities/KalDet/src/ild/common/ILDVMeasLayer.h index 3d213b3aadcc3f5c3b4ff693462ff2e746e22f53..498c5608c5753764d821da93748d32fe365601ce 100644 --- a/Utilities/KalDet/src/ild/common/ILDVMeasLayer.h +++ b/Utilities/KalDet/src/ild/common/ILDVMeasLayer.h @@ -13,6 +13,7 @@ #include "kaltest/TAttDrawable.h" #include "kaltest/KalTrackDim.h" #include "TString.h" +#include "edm4hep/TrackerHitConst.h" #include <vector> @@ -43,7 +44,7 @@ public: inline Double_t GetBz() const { return _Bz; } /** Convert LCIO Tracker Hit to an ILDPLanarTrackHit */ - virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::TrackerHit* trkhit) const = 0 ; + virtual ILDVTrackHit* ConvertLCIOTrkHit(edm4hep::ConstTrackerHit trkhit) const = 0 ; /** Check whether the measurement layer represents a series of detector elements */ bool isMultilayer() const { return _isMultiLayer; } diff --git a/Utilities/KalDet/src/ild/common/ILDVTrackHit.h b/Utilities/KalDet/src/ild/common/ILDVTrackHit.h index d47be083ee5e2bc1a8871d8ba1578301e8b352f1..89aa42f246a566dfbd79a0be41bd83444fc35a34 100644 --- a/Utilities/KalDet/src/ild/common/ILDVTrackHit.h +++ b/Utilities/KalDet/src/ild/common/ILDVTrackHit.h @@ -19,15 +19,15 @@ public: /** Constructor Taking coordinates and associated measurement layer, with bfield and number of measurement dimentions*/ ILDVTrackHit(const TVMeasLayer &ms, Double_t *x, Double_t *dx, - Double_t bfield , Int_t dim, edm4hep::TrackerHit* trkhit) + Double_t bfield , Int_t dim, edm4hep::ConstTrackerHit trkhit) : TVTrackHit(ms, x, dx, bfield, dim), _trkhit(trkhit) { /* no op */ } - edm4hep::TrackerHit* getLCIOTrackerHit() const { return _trkhit; } + edm4hep::ConstTrackerHit getLCIOTrackerHit() const { return _trkhit; } private: - edm4hep::TrackerHit* _trkhit; + edm4hep::ConstTrackerHit _trkhit; }; #endif diff --git a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc.remove b/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc.remove deleted file mode 100644 index dc6101e5ee7acee641647a3563dd5c5c1ba5e016..0000000000000000000000000000000000000000 --- a/Utilities/KalDet/src/ild/tpc/ILDTPCKalDetector.cc.remove +++ /dev/null @@ -1,139 +0,0 @@ - -#include "ILDTPCKalDetector.h" -#include "ILDCylinderMeasLayer.h" -#include "ILDCylinderHit.h" - -#include "TMath.h" -#include "TTUBE.h" - -#include "MaterialDataBase.h" - -#include <sstream> - -#include "gear/GEAR.h" -#include "gear/BField.h" -#include "gear/TPCParameters.h" -#include "gear/PadRowLayout2D.h" -#include "gearimpl/Util.h" - -#include <UTIL/BitField64.h> -#include <UTIL/ILDConf.h> - -#include "streamlog/streamlog.h" - -namespace kaldet{ - -ILDTPCKalDetector::ILDTPCKalDetector( const gear::GearMgr& gearMgr ) : -TVKalDetector(250) // SJA:FIXME initial size, 250 looks reasonable for ILD, though this would be better stored as a const somewhere -{ - - streamlog_out(DEBUG1) << "ILDTPCKalDetector building TPC detector using GEAR " << std::endl ; - - const gear::TPCParameters& tpcParams = gearMgr.getTPCParameters(); - - const gear::PadRowLayout2D& pL = tpcParams.getPadLayout() ; - - streamlog_out(DEBUG1) << "ILDTPCKalDetector - got padlayout with nLayers = " << pL.getNRows() << std::endl ; - - const Double_t bz = gearMgr.getBField().at( gear::Vector3D( 0.,0.,0.) ).z() ; - - static const Int_t nlayers = pL.getNRows() ; // n rows - static const Double_t lhalf = tpcParams.getMaxDriftLength() ; // half length - - static const Double_t rstep = pL.getRowHeight(0) ; // step length of radius - - // assuming that this is the radius of the first measurment layer .... - static const Double_t rmin = tpcParams.getPlaneExtent()[0] + rstep/2. ; // minimum radius - - streamlog_out( DEBUG0 ) << tpcParams << std::endl ; - - static const Double_t rtub = tpcParams.getDoubleVal("tpcInnerRadius") ; // inner r of support tube - static const Double_t outerr = tpcParams.getDoubleVal("tpcOuterRadius") ; // outer radius of TPC - - static const Double_t inthick = tpcParams.getDoubleVal("tpcInnerWallThickness") ; // thickness of inner shell - static const Double_t outthick = tpcParams.getDoubleVal("tpcOuterWallThickness") ; // thickness of outer shell - - MaterialDataBase::Instance().registerForService(gearMgr); - TMaterial & air = *MaterialDataBase::Instance().getMaterial("air"); - TMaterial & tpcgas = *MaterialDataBase::Instance().getMaterial("tpcgas"); - // TMaterial & aluminium = *MaterialDataBase::Instance().getMaterial("aluminium"); - TMaterial & tpcinnerfieldcage = *MaterialDataBase::Instance().getMaterial("tpcinnerfieldcage"); - TMaterial & tpcouterfieldcage = *MaterialDataBase::Instance().getMaterial("tpcouterfieldcage"); - - Bool_t active = true; - Bool_t dummy = false; - - std::string name = "TPC"; - - const double x0 = 0.0; - const double y0 = 0.0; - const double z0 = 0.0; - - - // add inner field cage - Add( new ILDCylinderMeasLayer(air, tpcinnerfieldcage , rtub, lhalf, x0, y0, z0, bz, dummy,-1,"TPCInnerFCInr" ) ); - streamlog_out( DEBUG0 ) << " *** adding " << name << " Measurement layer using CellID: [ inner field cage ] at R = " << rtub - << " X0_in = " << air.GetRadLength() << " X0_out = " << tpcinnerfieldcage.GetRadLength() - << std::endl ; - - Add( new ILDCylinderMeasLayer(tpcinnerfieldcage , tpcgas, rtub+inthick, lhalf, x0, y0, z0, bz, dummy,-1,"TPCInnerFCOtr" ) ); - streamlog_out( DEBUG0 ) << " *** adding " << name << " Measurement layer using CellID: [ inner field cage ] at R = " << rtub+inthick - << " X0_in = " << tpcinnerfieldcage.GetRadLength() << " X0_out = " << tpcgas.GetRadLength() - << std::endl ; - - - streamlog_out( DEBUG0 ) << " *** Inner Field Cage = " << int( (inthick/(tpcinnerfieldcage.GetRadLength()*10.0) /*cm*/ )*1000) / 10.0 << "% of a radiation length " << std::endl ; - - // create measurement layers - Double_t r = rmin; - - UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; - - for (Int_t layer = 0; layer < nlayers; layer++) { - - encoder.reset() ; // reset to 0 - - encoder[lcio::ILDCellID0::subdet] = lcio::ILDDetID::TPC ; - encoder[lcio::ILDCellID0::layer] = layer ; - - int CellID = encoder.lowWord() ; - - ILDCylinderMeasLayer* tpcL = new ILDCylinderMeasLayer(tpcgas, tpcgas, r, lhalf, x0, y0, z0, bz, active, CellID, "TPCMeasLayer") ; - - Add( tpcL ) ; - - int nth_layers(10) ; - - if( layer % nth_layers == 0 ){ - - streamlog_out( DEBUG0 ) << " *** for TPC Gas printing only every " << nth_layers << "th layer" << std::endl ; - streamlog_out( DEBUG0 ) << " *** adding " << name << " Measurement layer using CellID: [" << CellID << "] at R = " << r - << " X0_in = " << tpcgas.GetRadLength() << " X0_out = " << tpcgas.GetRadLength() - << std::endl ; - } - - r += rstep; - - } - - // add outer field cage - Add( new ILDCylinderMeasLayer(tpcgas, tpcouterfieldcage, outerr-outthick, lhalf, x0, y0, z0, bz, dummy,-1,"TPCOuterFCInr") ) ; - - streamlog_out( DEBUG0 ) << " *** adding " << name << " Measurement layer using CellID: [ outer field cage ] at R = " << outerr-outthick - << " X0_in = " << tpcgas.GetRadLength() << " X0_out = " << tpcouterfieldcage.GetRadLength() - << std::endl ; - - Add( new ILDCylinderMeasLayer(tpcouterfieldcage, air, outerr, lhalf, x0, y0, z0, bz, dummy,-1,"TPCOuterFCOtr") ) ; - - streamlog_out( DEBUG0 ) << " *** adding " << name << " Measurement layer using CellID: [ outer field cage ] at R = " << outerr - << " X0_in = " << tpcouterfieldcage.GetRadLength() << " X0_out = " << air.GetRadLength() - << std::endl ; - - streamlog_out( DEBUG0 ) << " *** Outer Field Cage = " << int( (outthick/(tpcouterfieldcage.GetRadLength()*10.0) /*cm*/ )*1000) / 10.0 << "% of a radiation length " << std::endl ; - - - SetOwner(); -} - - -} diff --git a/Utilities/KalTest/src/CMakeLists.txt.remove b/Utilities/KalTest/src/CMakeLists.txt.remove deleted file mode 100644 index e56e882093ee6f8d8a681f9080d3b43fd118a527..0000000000000000000000000000000000000000 --- a/Utilities/KalTest/src/CMakeLists.txt.remove +++ /dev/null @@ -1,42 +0,0 @@ -# build KalTest library - -SET( lib_input_dirs geomlib kallib kaltracklib utils ) - -FOREACH( lib_input_dir ${lib_input_dirs} ) - LIST( APPEND ROOT_DICT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${lib_input_dir} ) -ENDFOREACH() - -#MESSAGE( STATUS "ROOT_DICT_INCLUDE_DIRS: ${ROOT_DICT_INCLUDE_DIRS}" ) - -FOREACH( lib_input_dir ${lib_input_dirs} ) - - AUX_SOURCE_DIRECTORY( ${lib_input_dir} lib_sources ) - - PREPARE_ROOT_DICT_HEADERS( ${lib_input_dir} ) - - INSTALL_DIRECTORY( ${lib_input_dir}/ DESTINATION "include/kaltest" - FILES_MATCHING PATTERN "*.h" PATTERN "LinkDef.h" EXCLUDE - ) - - GEN_ROOT_DICT_SOURCES( ${lib_input_dir}Dict.cxx ) - - LIST( APPEND lib_sources ${ROOT_DICT_OUTPUT_SOURCES} ) - -ENDFOREACH() - -INCLUDE_DIRECTORIES( ${ROOT_DICT_INCLUDE_DIRS} ) -INCLUDE_DIRECTORIES( ${ROOT_INCLUDE_DIRS} ) - -#MESSAGE( STATUS "KalTest lib sources: ${lib_sources}" ) - -ADD_SHARED_LIBRARY( KalTest ${lib_sources} ) -INSTALL_SHARED_LIBRARY( KalTest DESTINATION lib ) -TARGET_LINK_LIBRARIES( KalTest ${ROOT_LIBRARIES} ) - -IF( APPLE ) #---- need special linker flags for ROOT dictionary on MacOS - SET_TARGET_PROPERTIES( KalTest PROPERTIES - LINK_FLAGS "-single_module -undefined dynamic_lookup -bind_at_load" - ) -ENDIF( APPLE ) - - diff --git a/Utilities/KiTrack/Tools/KiTrackMarlinTools.h b/Utilities/KiTrack/Tools/KiTrackMarlinTools.h index f4b582928e31485985445d945aa07d34c833a749..c137684e236e7983463bf5109c104a25fbd0998d 100644 --- a/Utilities/KiTrack/Tools/KiTrackMarlinTools.h +++ b/Utilities/KiTrack/Tools/KiTrackMarlinTools.h @@ -79,7 +79,7 @@ FTDHitSimple* createVirtualIPHit( int side , const SectorSystemFTD* sectorSystem VXDHitSimple* createVirtualIPHit( const SectorSystemVXD* sectorSystemVXD ); -std::string getPositionInfo( edm4hep::ConstTrackerHit* hit ); +std::string getPositionInfo( edm4hep::ConstTrackerHit hit ); std::string getPositionInfo( IHit* hit ); diff --git a/Utilities/KiTrack/src/Tools/FTDHelixFitter.cc b/Utilities/KiTrack/src/Tools/FTDHelixFitter.cc index 2f0492a067d0757784ca357bc1845919276d5dfe..219770d3d4dcf5246f42207979d1b94ff3ea2c7e 100644 --- a/Utilities/KiTrack/src/Tools/FTDHelixFitter.cc +++ b/Utilities/KiTrack/src/Tools/FTDHelixFitter.cc @@ -24,7 +24,7 @@ FTDHelixFitter::FTDHelixFitter( edm4hep::Track* track ){ //int nHits = track->trackerHits_size(); std::copy(track->trackerHits_begin(), track->trackerHits_end(), std::back_inserter(_trackerHits)); //for(int i=0;i<nHits;i++){ - // edm4hep::ConstTrackerHit* hit = &track->getTrackerHits(i); + // edm4hep::ConstTrackerHit hit = &track->getTrackerHits(i); // _trackerHits.push_back(hit); //} fit(); diff --git a/Utilities/KiTrack/src/Tools/Fitter.cc b/Utilities/KiTrack/src/Tools/Fitter.cc index 13ae3aabe0f057acb5a701f0fe08d8b173252a49..512c4a22618540f5c56d25bf00571ba7b1d21a72 100644 --- a/Utilities/KiTrack/src/Tools/Fitter.cc +++ b/Utilities/KiTrack/src/Tools/Fitter.cc @@ -33,13 +33,13 @@ void Fitter::init_BField(){ } -bool compare_TrackerHit_z( edm4hep::TrackerHit* a, edm4hep::TrackerHit* b ){ - return ( fabs(a->getPosition()[2]) < fabs( b->getPosition()[2]) ); //compare their z values +bool compare_TrackerHit_z( edm4hep::ConstTrackerHit a, edm4hep::ConstTrackerHit b ){ + return ( fabs(a.getPosition()[2]) < fabs( b.getPosition()[2]) ); //compare their z values } -bool compare_TrackerHit_R( edm4hep::TrackerHit* a, edm4hep::TrackerHit* b ){ - double Rad_a2 = (a->getPosition()[0]*a->getPosition()[0]) + (a->getPosition()[1]*a->getPosition()[1]) ; - double Rad_b2 = (b->getPosition()[0]*b->getPosition()[0]) + (b->getPosition()[1]*b->getPosition()[1]) ; +bool compare_TrackerHit_R( edm4hep::ConstTrackerHit a, edm4hep::ConstTrackerHit b ){ + double Rad_a2 = (a.getPosition()[0]*a.getPosition()[0]) + (a.getPosition()[1]*a.getPosition()[1]) ; + double Rad_b2 = (b.getPosition()[0]*b.getPosition()[0]) + (b.getPosition()[1]*b.getPosition()[1]) ; return ( Rad_a2 < Rad_b2 ); //compare their radii } @@ -84,21 +84,21 @@ void Fitter::fitVXD(){ unsigned number_of_added_hits = 0; unsigned ndof_added = 0; - std::vector< edm4hep::TrackerHit* > added_hits; - std::vector< edm4hep::TrackerHit* > added_hits_2D; + std::vector< edm4hep::ConstTrackerHit > added_hits; + std::vector< edm4hep::ConstTrackerHit > added_hits_2D; for( it = _trackerHits.begin() ; it != _trackerHits.end() ; ++it ) { - edm4hep::TrackerHit* trkHit = Navigation::Instance()->GetTrackerHit((*it).getObjectID()); + edm4hep::ConstTrackerHit trkHit = Navigation::Instance()->GetTrackerHit((*it).getObjectID()); bool isSuccessful = false; - if( UTIL::BitSet32( trkHit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint + if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint //Split it up and hits to the MarlinTrk - std::vector< edm4hep::TrackerHit* > rawHits; - //const LCObjectVec rawObjects = trkHit->getRawHits(); - //for( unsigned k=0; k<rawObjects.size(); k++ ) rawHits.push_back( dynamic_cast< TrackerHit* >( rawObjects[k] ) ); - int nRawHit = trkHit->rawHits_size(); + std::vector< edm4hep::ConstTrackerHit > rawHits; + //const LCObjectVec rawObjects = trkHit.getRawHits(); + //for( unsigned k=0; k<rawObjects.size(); k++ ) rawHits.push_back( dynamic_cast< ConstTrackerHit >( rawObjects[k] ) ); + int nRawHit = trkHit.rawHits_size(); for( unsigned k=0; k< nRawHit; k++ ){ - edm4hep::TrackerHit* rawHit = Navigation::Instance()->GetTrackerHit(trkHit->getRawHits(k)); + edm4hep::ConstTrackerHit rawHit = Navigation::Instance()->GetTrackerHit(trkHit.getRawHits(k)); rawHits.push_back(rawHit); } std::sort( rawHits.begin(), rawHits.end(), compare_TrackerHit_R ); @@ -142,7 +142,7 @@ void Fitter::fitVXD(){ for (unsigned ihit=0; ihit <added_hits.size(); ++ihit) { // check if this a space point or 2D hit - if(UTIL::BitSet32( added_hits[ihit]->getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] == false ){ + if(UTIL::BitSet32( added_hits[ihit].getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] == false ){ // then add to the list added_hits_2D.push_back(added_hits[ihit]); @@ -151,9 +151,9 @@ void Fitter::fitVXD(){ // initialise with space-points not strips // make a helix from 3 hits to get a trackstate - const edm4hep::Vector3d x1 = added_hits_2D[0]->getPosition(); - const edm4hep::Vector3d x2 = added_hits_2D[ added_hits_2D.size()/2 ]->getPosition(); - const edm4hep::Vector3d x3 = added_hits_2D.back()->getPosition(); + const edm4hep::Vector3d x1 = added_hits_2D[0].getPosition(); + const edm4hep::Vector3d x2 = added_hits_2D[ added_hits_2D.size()/2 ].getPosition(); + const edm4hep::Vector3d x3 = added_hits_2D.back().getPosition(); init_BField(); HelixTrack helixTrack( x1, x2, x3, _bField, HelixTrack::forwards ); @@ -223,7 +223,7 @@ void Fitter::fitVXD(){ // fitting finished get hits in the fit for safety checks: - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; // remember the hits are ordered in the order in which they were fitted // here we are fitting inwards so the first is the last and vice verse @@ -240,14 +240,14 @@ void Fitter::fitVXD(){ throw FitterException( s.str() ); } - edm4hep::TrackerHit* first_hit_in_fit = hits_in_fit.back().first; - if (!first_hit_in_fit) { + edm4hep::ConstTrackerHit first_hit_in_fit = hits_in_fit.back().first; + if (! first_hit_in_fit.isAvailable()) { throw FitterException( std::string("Fitter::fit(): TrackerHit pointer to first hit == NULL ") ) ; } - edm4hep::TrackerHit* last_hit_in_fit = hits_in_fit.front().first; - if (!last_hit_in_fit) { + edm4hep::ConstTrackerHit last_hit_in_fit = hits_in_fit.front().first; + if (!last_hit_in_fit.isAvailable()) { throw FitterException( std::string("Fitter::fit(): TrackerHit pointer to last hit == NULL ") ) ; } @@ -275,21 +275,21 @@ void Fitter::fit(){ unsigned number_of_added_hits = 0; unsigned ndof_added = 0; - std::vector<edm4hep::TrackerHit*> added_hits; + std::vector<edm4hep::ConstTrackerHit> added_hits; for( it = _trackerHits.begin() ; it != _trackerHits.end() ; ++it ) { - edm4hep::TrackerHit* trkHit = Navigation::Instance()->GetTrackerHit((*it).getObjectID()); + edm4hep::ConstTrackerHit trkHit = Navigation::Instance()->GetTrackerHit((*it).getObjectID()); bool isSuccessful = false; - //std::cout << "Hit " << trkHit->id() << " " << trkHit->getPosition() << std::endl; - if( UTIL::BitSet32( trkHit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint + //std::cout << "Hit " << trkHit->id() << " " << trkHit.getPosition() << std::endl; + if( UTIL::BitSet32( trkHit.getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ //it is a composite spacepoint //Split it up and hits to the MarlinTrk - std::vector<edm4hep::TrackerHit*> rawHits; - //const LCObjectVec rawObjects = trkHit->getRawHits(); - //for( unsigned k=0; k<rawObjects.size(); k++ ) rawHits.push_back( dynamic_cast< TrackerHit* >( rawObjects[k] ) ); - int nRawHit = trkHit->rawHits_size(); + std::vector<edm4hep::ConstTrackerHit> rawHits; + //const LCObjectVec rawObjects = trkHit.getRawHits(); + //for( unsigned k=0; k<rawObjects.size(); k++ ) rawHits.push_back( dynamic_cast< ConstTrackerHit >( rawObjects[k] ) ); + int nRawHit = trkHit.rawHits_size(); for( unsigned k=0; k< nRawHit; k++ ){ - edm4hep::TrackerHit* rawHit = Navigation::Instance()->GetTrackerHit(trkHit->getRawHits(k)); - //std::cout << "Raw Hit " << rawHit->id() << " " << rawHit->getPosition() << std::endl; + edm4hep::ConstTrackerHit rawHit = Navigation::Instance()->GetTrackerHit(trkHit.getRawHits(k)); + //std::cout << "Raw Hit " << rawHit->id() << " " << rawHit.getPosition() << std::endl; rawHits.push_back(rawHit); } std::sort( rawHits.begin(), rawHits.end(), compare_TrackerHit_z ); @@ -334,9 +334,9 @@ void Fitter::fit(){ // initialise with space-points not strips // make a helix from 3 hits to get a trackstate - const edm4hep::Vector3d x1 = added_hits[0]->getPosition(); - const edm4hep::Vector3d x2 = added_hits[ added_hits.size()/2 ]->getPosition(); - const edm4hep::Vector3d x3 = added_hits.back()->getPosition(); + const edm4hep::Vector3d x1 = added_hits[0].getPosition(); + const edm4hep::Vector3d x2 = added_hits[ added_hits.size()/2 ].getPosition(); + const edm4hep::Vector3d x3 = added_hits.back().getPosition(); init_BField(); HelixTrack helixTrack( x1, x2, x3, _bField, HelixTrack::forwards ); @@ -396,7 +396,7 @@ void Fitter::fit(){ // fitting finished get hits in the fit for safety checks: - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; // remember the hits are ordered in the order in which they were fitted // here we are fitting inwards so the first is the last and vice verse @@ -410,13 +410,13 @@ void Fitter::fit(){ throw FitterException( s.str() ); } - edm4hep::TrackerHit* first_hit_in_fit = hits_in_fit.back().first; - if (!first_hit_in_fit) { + edm4hep::ConstTrackerHit first_hit_in_fit = hits_in_fit.back().first; + if (!first_hit_in_fit.isAvailable()) { throw FitterException( std::string("Fitter::fit(): TrackerHit pointer to first hit == NULL ") ) ; } - edm4hep::TrackerHit* last_hit_in_fit = hits_in_fit.front().first; - if (!last_hit_in_fit) { + edm4hep::ConstTrackerHit last_hit_in_fit = hits_in_fit.front().first; + if (!last_hit_in_fit.isAvailable()) { throw FitterException( std::string("Fitter::fit(): TrackerHit pointer to last hit == NULL ") ) ; } @@ -478,13 +478,13 @@ const TrackStatePlus* Fitter::getTrackStatePlus( int trackStateLocation ){ } } case 2/*lcio::TrackState::AtFirstHit*/:{ - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; // remember the hits are ordered in the order in which they were fitted // here we are fitting inwards so the first is the last and vice verse _marlinTrk->getHitsInFit(hits_in_fit); - edm4hep::TrackerHit* first_hit_in_fit = hits_in_fit.back().first; + edm4hep::ConstTrackerHit first_hit_in_fit = hits_in_fit.back().first; return_code = _marlinTrk->getTrackState(first_hit_in_fit, *trackState, chi2, ndf ) ; @@ -506,10 +506,10 @@ const TrackStatePlus* Fitter::getTrackStatePlus( int trackStateLocation ){ } } case 3/*lcio::TrackState::AtLastHit*/:{ - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; _marlinTrk->getHitsInFit(hits_in_fit); - edm4hep::TrackerHit* last_hit_in_fit = hits_in_fit.front().first; + edm4hep::ConstTrackerHit last_hit_in_fit = hits_in_fit.front().first; return_code = _marlinTrk->getTrackState(last_hit_in_fit, *trackState, chi2, ndf ) ; @@ -531,10 +531,10 @@ const TrackStatePlus* Fitter::getTrackStatePlus( int trackStateLocation ){ break; } case 4/*lcio::TrackState::AtCalorimeter*/:{ - std::vector<std::pair<edm4hep::TrackerHit*, double> > hits_in_fit; + std::vector<std::pair<edm4hep::ConstTrackerHit, double> > hits_in_fit; _marlinTrk->getHitsInFit(hits_in_fit); - edm4hep::TrackerHit* last_hit_in_fit = hits_in_fit.front().first; + edm4hep::ConstTrackerHit last_hit_in_fit = hits_in_fit.front().first; UTIL::BitField64 encoder( UTIL::ILDCellID0::encoder_string ) ; encoder.reset() ; // reset to 0 diff --git a/Utilities/KiTrack/src/Tools/KiTrackMarlinCEDTools.cc.bak b/Utilities/KiTrack/src/Tools/KiTrackMarlinCEDTools.cc.bak deleted file mode 100644 index 9ff3a2424354e226e71bebd0f1edcb34a3160bb6..0000000000000000000000000000000000000000 --- a/Utilities/KiTrack/src/Tools/KiTrackMarlinCEDTools.cc.bak +++ /dev/null @@ -1,122 +0,0 @@ -#include "Tools/KiTrackMarlinCEDTools.h" - -#include <cmath> - -#include <CLHEP/Random/RandFlat.h> - -#include "MarlinCED.h" - - -void KiTrackMarlin::drawAutomatonSegments( const Automaton& automaton ){ - - - std::vector< const Segment* > segments = automaton.getSegments(); - - - for( unsigned i=0 ; i < segments.size(); i++ ){ - - - const Segment* segment = segments[i]; - std::vector < IHit* > hits = segment->getHits(); - - - if ( hits.size() == 1){ //exactly one hit, so draw a point - - - IHit* a = hits[0]; - ced_hit( a->getX() ,a->getY() , a->getZ() , 0 , 3 ,0xff0000 ); - - - } - else{ //more than one point or no points - - for( unsigned j=1 ; j< hits.size() ; j++ ){ // over all hits in the segment (as we connect it with the previous we start with hit 1) - - IHit* a = hits[j]; - IHit* b = hits[j-1]; - - - unsigned int color=0; - unsigned int red=0; - unsigned int blue=0; - unsigned int green=0; - - float p = sqrt ((float) segment->getInnerState() / (float) ( 7 )); - - green = unsigned( ceil ( (1.-p) * 255 ) ); - red = unsigned( floor( 255*p ) ); - blue = unsigned( ceil ( (1.-p) * 255 ) ); - - color = red * 256*256 + green * 256 + blue; - - - ced_line_ID( a->getX() ,a->getY() , a->getZ() , b->getX() ,b->getY() , b->getZ() , 2 , segment->getInnerState()+2 , color, 0); - - } - - } - - } - - -} - - - -void KiTrackMarlin::drawTrack( ITrack* track, int color ){ - - - std::vector < IHit* > hits = track->getHits(); - - for( unsigned j=1 ; j< hits.size() ; j++ ){ // over all hits in the segment (as we connect it with the previous we start with hit 1) - - IHit* a = hits[j]; - IHit* b = hits[j-1]; - - ced_line_ID( a->getX() ,a->getY() , a->getZ() , b->getX() ,b->getY() , b->getZ() , 2 , 5 , color, 0); - - } - - - - -} - - -void KiTrackMarlin::drawTrackRandColor( ITrack* track ){ - - - int red = 0; - int green = 0; - int blue = 0; - - int dist = 0; - int distmin = 60; - - while( dist < distmin ){ - - red = CLHEP::RandFlat::shootInt(256); - green = CLHEP::RandFlat::shootInt(256); - blue = CLHEP::RandFlat::shootInt(256); - - - dist = std::abs( red - green ); - if( std::abs( green - blue ) > dist ) dist = std::abs( green - blue ); - if( std::abs( red - blue ) > dist ) dist = std::abs( red - blue ); - - } - - int color = red * 256*256 + green * 256 + blue; - drawTrack( track, color ); - - - -} - - - - - - - - diff --git a/Utilities/KiTrack/src/Tools/KiTrackMarlinTools.cc b/Utilities/KiTrack/src/Tools/KiTrackMarlinTools.cc index 7bb007c96e255170a4319635c87d1875ed4776fb..235f724d83a1737729c714d26fc47b98314ac078 100644 --- a/Utilities/KiTrack/src/Tools/KiTrackMarlinTools.cc +++ b/Utilities/KiTrack/src/Tools/KiTrackMarlinTools.cc @@ -150,8 +150,8 @@ void KiTrackMarlin::saveToRoot( std::string rootFileName, std::string treeName , } -//bool KiTrackMarlin::compare_TrackerHit_z( edm4hep::ConstTrackerHit* a, edm4hep::ConstTrackerHit* b ){ -// return ( fabs(a->getPosition()[2]) < fabs( b->getPosition()[2]) ); //compare their z values +//bool KiTrackMarlin::compare_TrackerHit_z( edm4hep::ConstTrackerHit a, edm4hep::ConstTrackerHit b ){ +// return ( fabs(a.getPosition()[2]) < fabs( b.getPosition()[2]) ); //compare their z values //} bool KiTrackMarlin::compare_TrackerHit_z( edm4hep::ConstTrackerHit& a, edm4hep::ConstTrackerHit& b ){ @@ -197,13 +197,13 @@ VXDHitSimple* KiTrackMarlin::createVirtualIPHit( const SectorSystemVXD* sectorSy } -std::string KiTrackMarlin::getPositionInfo( edm4hep::ConstTrackerHit* hit ){ +std::string KiTrackMarlin::getPositionInfo( edm4hep::ConstTrackerHit hit ){ std::stringstream info; - double x = hit->getPosition()[0]; - double y = hit->getPosition()[1]; - double z = hit->getPosition()[2]; + double x = hit.getPosition()[0]; + double y = hit.getPosition()[1]; + double z = hit.getPosition()[2]; info << "(" << x << "," << y << "," << z << ")"; @@ -245,11 +245,11 @@ std::string KiTrackMarlin::getTrackHitInfo( ITrack* track){ std::string KiTrackMarlin::getTrackHitInfo( edm4hep::Track* track){ std::stringstream info; - //std::vector< edm4hep::TrackerHit* > hits; + //std::vector< edm4hep::ConstTrackerHit > hits; unsigned int nHits = track->trackerHits_size(); for(unsigned i=0; i<nHits; i++){ edm4hep::ConstTrackerHit hit = track->getTrackerHits(i); - info << getPositionInfo(&hit); + info << getPositionInfo(hit); } //for( unsigned i=0; i < hits.size(); i++ ){ diff --git a/Utilities/KiTrack/src/Tools/VXDHelixFitter.cc.bak b/Utilities/KiTrack/src/Tools/VXDHelixFitter.cc.bak deleted file mode 100644 index 515a80298c3ae1531e4a4a9a0c35367b21ce844a..0000000000000000000000000000000000000000 --- a/Utilities/KiTrack/src/Tools/VXDHelixFitter.cc.bak +++ /dev/null @@ -1,190 +0,0 @@ -#include "Tools/VXDHelixFitter.h" - -#include <sstream> -#include <algorithm> -#include <cmath> - -#include "edm4hep/TrackerHit.h" -#include "UTIL/ILDConf.h" -#include "UTIL/LCTrackerConf.h" -//#include "marlin/VerbosityLevels.h" -#include "TrackSystemSvc/HelixFit.h" - -#include "Tools/KiTrackMarlinTools.h" - - -VXDHelixFitter::VXDHelixFitter( std::vector< TrackerHit* > trackerHits ){ - - _trackerHits = trackerHits; - - fit(); - -} - -VXDHelixFitter::VXDHelixFitter( Track* track ){ - - _trackerHits = track->getTrackerHits(); - - fit(); - -} - -void VXDHelixFitter::fit(){ - - std::vector< TrackerHit* > trackerHits2D ; - - for (unsigned ihit=0; ihit <_trackerHits.size(); ++ihit) { - - // check if this a space point or 2D hit - if(UTIL::BitSet32( _trackerHits[ihit]->getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] == false ){ - // then add to the list - trackerHits2D.push_back(_trackerHits[ihit]); - - } - } - - std::sort( trackerHits2D.begin(), trackerHits2D.end(), KiTrackMarlin::compare_TrackerHit_R ); - - int nHits = trackerHits2D.size(); - - int iopt = 2; - float chi2RPhi; - float chi2Z; - - // DEBUG - //streamlog_out(DEBUG4) << " no of hits fitted " << nHits << std::endl ; - - if( nHits < 3 ){ - - std::stringstream s; - s << "VXDHelixFitter::fit(): Cannot fit less with less than 3 hits. Number of hits = " << nHits << "\n"; - - throw VXDHelixFitterException( s.str() ); - - } - - double* xh = new double[nHits]; - double* yh = new double[nHits]; - float* zh = new float[nHits]; - double* wrh = new double[nHits]; - float* wzh = new float[nHits]; - float* rh = new float[nHits]; - float* ph = new float[nHits]; - - float par[5]; - float epar[15]; - - for( int i=0; i<nHits; i++ ){ - - TrackerHit* hit = trackerHits2D[i]; - - xh[i] = hit->getPosition()[0]; - yh[i] = hit->getPosition()[1]; - zh[i] = float(hit->getPosition()[2]); - - //wrh[i] = double(1.0/(hit->getResolutionRPhi()*hit->getResolutionRPhi())); - //wzh[i] = 1.0/(hit->getResolutionZ()*hit->getResolutionZ()); - //wrh[i] = double(1.0/(sqrt((hit->getCovMatrix()[0]*hit->getCovMatrix()[0]) + (hit->getCovMatrix()[2]*hit->getCovMatrix()[2])))); - //wzh[i] = 1.0/(hit->getCovMatrix()[5]); - - rh[i] = float(sqrt(xh[i]*xh[i]+yh[i]*yh[i])); - ph[i] = atan2(yh[i],xh[i]); - if (ph[i] < 0.) - ph[i] = 2.*M_PI + ph[i]; - - // Just to debug the resolutions - //streamlog_out(DEBUG4) << " hit's radius " << rh[i] << " R-phi uncertainty " << wrh[i] << " Z uncertainty " << wzh[i] << " Cov[0] " << hit->getCovMatrix()[0] << " Cov[2] " << hit->getCovMatrix()[2] << " Cov[5] " << hit->getCovMatrix()[5] << std::endl ; - - // check for composite spacepoints - if( BitSet32( hit->getType() )[ UTIL::ILDTrkHitTypeBit::COMPOSITE_SPACEPOINT ] ){ - - //streamlog_out(DEBUG4) << " COMPOSITE SPACEPOINT radius: " << rh[i] << std::endl ; - - float sigX = hit->getCovMatrix()[0]; - float sigY = hit->getCovMatrix()[2]; - wrh[i] = 1/sqrt( sigX*sigX + sigY*sigY ); - wzh[i] = 1.0/(hit->getCovMatrix()[5]); - - //streamlog_out(DEBUG4) << " SPACEPOINT:: hit's radius " << rh[i] << " R-phi uncertainty " << wrh[i] << " Z uncertainty " << wzh[i] << " res RPhi " << sqrt( sigX*sigX + sigY*sigY ) << " res Z " << (hit->getCovMatrix()[5]) << std::endl ; - - } - else if ( BitSet32( hit->getType() )[ UTIL::ILDTrkHitTypeBit::ONE_DIMENSIONAL ] ) { - - // YV: FIXME: very crude hack, hard coded the SIT strip digital resolution in V - //streamlog_out(DEBUG4) << " 1D hit radius: " << rh[i] << std::endl ; - - //TrackerHitPlane* hitPlane = dynamic_cast<TrackerHitPlane*>( hit ); - //wrh[i] = double(1.0/( hitPlane->getdU()*hitPlane->getdU() )); - wrh[i] = double(1.0/( hit->getCovMatrix(2)*hit->getCovMatrix(2) )); - double resZ = 92.0 / std::sqrt( 12. ) ; - //double resZ = 0.003 ; - wzh[i] = 1.0/( resZ * resZ ); - - //streamlog_out(DEBUG4) << " 1Dimensional TRACKERHITPLANE:: hit's radius " << rh[i] << " R-phi uncertainty " << wrh[i] << " Z uncertainty " << wzh[i] << " dU " << hitPlane->getdU() << " dV " << resZ << " 1/du^2 "<< (1/(hitPlane->getdU()*hitPlane->getdU())) << " 1/dv^2 "<< wzh[i] << std::endl ; - - } - - else { - - //streamlog_out(DEBUG4) << " 2D hit radius: " << rh[i] << std::endl ; - //TrackerHitPlane* hitPlane = dynamic_cast<TrackerHitPlane*>( hit ); - //wrh[i] = double(1.0/( hitPlane->getdU()*hitPlane->getdU() )); - //wzh[i] = wrh[i]; // pixel VXD - wrh[i] = double(1.0/( hit->getCovMatrix(2)*hit->getCovMatrix(2) )); - wzh[i] = double(1.0/( hit->getCovMatrix(5)*hit->getCovMatrix(5) )); - - //streamlog_out(DEBUG4) << "2D pixel TRACKERHITPLANE:: hit's radius " << rh[i] << " R-phi uncertainty " << wrh[i] << " Z uncertainty " << wzh[i] << " dU " << hitPlane->getdU() << " dV " << hitPlane->getdV() << " 1/du^2 "<< (1/(hitPlane->getdU()*hitPlane->getdU())) << " 1/dv^2 "<< (1/(hitPlane->getdV()*hitPlane->getdV())) << std::endl ; - - } - } - - - - - MarlinTrk::HelixFit helixFitter; - - helixFitter.fastHelixFit(nHits, xh, yh, rh, ph, wrh, zh, wzh,iopt, par, epar, chi2RPhi, chi2Z); - par[3] = par[3]*par[0]/fabs(par[0]); - - _omega = par[0]; - _tanLambda = par[1]; - _phi0 = par[2]; - _d0 = par[3]; - _z0 = par[4]; - - float chi2 = chi2RPhi+chi2Z; - int Ndf = 2*nHits-5; - - - - - delete[] xh; - delete[] yh; - delete[] zh; - delete[] wrh; - delete[] wzh; - delete[] rh; - delete[] ph; - xh = NULL; - yh = NULL; - zh = NULL; - wrh = NULL; - wzh = NULL; - rh = NULL; - ph = NULL; - - - //streamlog_out(DEBUG4) << "chi2 rphi = " << chi2RPhi << ", chi2 Z = " << chi2Z << ", Ndf = " << Ndf << "\n"; - - _chi2 = chi2; - _Ndf = Ndf; - - return; - - - -} - - - - diff --git a/Utilities/KiTrack/src/Tools/VXDHelixFitter.h b/Utilities/KiTrack/src/Tools/VXDHelixFitter.h index cf066262e62f12be1ddeedc1417e814825dbd8b7..d0c8438329811b43dccb48e5dfb0792e0e6ff79c 100644 --- a/Utilities/KiTrack/src/Tools/VXDHelixFitter.h +++ b/Utilities/KiTrack/src/Tools/VXDHelixFitter.h @@ -47,7 +47,7 @@ class VXDHelixFitter{ public: VXDHelixFitter( edm4hep::Track* track ) ; - VXDHelixFitter( std::vector < edm4hep::TrackerHit* > trackerHits ) ; + VXDHelixFitter( std::vector < edm4hep::ConstTrackerHit > trackerHits ) ; double getChi2(){ return _chi2; } @@ -74,7 +74,7 @@ private: float _d0; float _z0; - std::vector< edm4hep::TrackerHit* > _trackerHits; + std::vector< edm4hep::ConstTrackerHit > _trackerHits; };