hi -

it has long been that the methods that dereference a const
datavector&lt;t&gt; (operator[], etc), return a `const t*',
even though the value_type is `t*'.

however, datavector&lt;t&gt;::const_iterator has been inconsistent with this,
in that dereferencing the iterator returns a `t*'.

we are trying to change this feature of datavector::const_iterator, so that
dereferencing it will also return a `const t*', consistent with
datavector.  we hope this will help catch instances where
data objects are unintentionally modified.

these changes are in datamodel-00-23-21.
unfortunately, this requires some changes in client packages.

here are the changes in combinedmuonrefit that were required to be
compatible with these changes.


+verbatim+
index: src/refitmuon.cxx
===================================================================
--- src/refitmuon.cxx	(revision 447210)
+++ src/refitmuon.cxx	(working copy)
@@ -363,11 +363,11 @@
         const trk::track *idtrack=(**combinedmuon).getidtrack();
         const trk::track *mstrack=muondatatag-&gt;getmstrack();
         trk::track *combtrack=const_cast&lt;trk::track *&gt;(muontracktag-&gt;getcombinedtrack());
-        rec::trackparticle * indetparticle = 0;
+        const rec::trackparticle * indetparticle = 0;
 	for (rec::trackparticlecontainer::const_iterator ip = indetparticles-&gt;begin();  ip != indetparticles-&gt;end(); ++ip) {
           if ((**ip).originaltrack() == idtrack) indetparticle = *ip;
 	}
-        rec::trackparticle * muonparticle = 0;
+        const rec::trackparticle * muonparticle = 0;
         for (rec::trackparticlecontainer::const_iterator ip = spectrometerparticles-&gt;begin();  ip != spectrometerparticles-&gt;end(); ++ip) {
           if ((**ip).originaltrack() == mstrack) muonparticle = *ip;
         }
@@ -515,7 +515,7 @@
         double theta = aper-&gt;parameters()[trk::theta];
         double qoverp = aper-&gt;parameters()[trk::qoverp];
         if (msglvl(msg::debug)) msg(msg::debug) &lt;&lt; &quot;refitted parameters &quot; &lt;&lt; d0  &lt;&lt; &quot; &quot; &lt;&lt; z0  &lt;&lt; &quot; &quot; &lt;&lt; phi0 &lt;&lt; &quot; &quot; &lt;&lt; theta &lt;&lt; &quot; &quot; &lt;&lt; qoverp &lt;&lt;  endreq;
-        rec::trackparticle * indetparticle = 0;
+        const rec::trackparticle * indetparticle = 0;
 	for (rec::trackparticlecontainer::const_iterator ip = indetparticles-&gt;begin();  ip != indetparticles-&gt;end(); ++ip) {
           if ((**ip).originaltrack() == idtrack) indetparticle = *ip;
 	}
-verbatim-
