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 jetutils that were required to be
compatible with these changes.

the changes to jetcollectionhelper are not actually required by this
package, but are used by other packages that depend on this one.

+verbatim+
index: jetutils/jetcollectionhelper.h
===================================================================
--- jetutils/jetcollectionhelper.h	(revision 447210)
+++ jetutils/jetcollectionhelper.h	(working copy)
@@ -28,6 +28,8 @@
   /// helper defines collection type!
   typedef ijetalgtoolbase::jetcollection_t jetcollection_t;
 
+  typedef std::list&lt;const jet*&gt; const_jetcollection_t;
+
   /////////////////////////////////////////////////////////////////////////////
   /// \brief remove iterator only
   /////////////////////////////////////////////////////////////////////////////
@@ -307,6 +309,21 @@
     return sort_jets(&amp;thejets,thesorter);
   }
 
+  template&lt;class t&gt;
+  static const_jetcollection_t::iterator sort_jets(const_jetcollection_t* thejets,
+                                                   t thesorter)
+  {
+    thejets-&gt;sort(thesorter);
+    return thejets-&gt;begin();
+  }
+
+  template&lt;class t&gt;
+  static const_jetcollection_t::iterator sort_jets(const_jetcollection_t&amp; thejets,
+                                                   t thesorter)
+  {
+    return sort_jets(&amp;thejets,thesorter);
+  }
+
   /////////////////////////////////////////////////////////////////////////////
   /// \brief record, lock and symlink a collection
   /////////////////////////////////////////////////////////////////////////////
index: jetutils/jetclassifier.h
===================================================================
--- jetutils/jetclassifier.h	(revision 447210)
+++ jetutils/jetclassifier.h	(working copy)
@@ -21,19 +21,19 @@
   jetsampling* dosampleatlfast( jet* );
 
   /** fills the energy in layers into jetsampling for atlfast jets */ 
-  void fill_jetatlfast_sampling(jet *, jetsampling*);
+  void fill_jetatlfast_sampling(const jet *, jetsampling*);
 
   /** fills the energy in layers into jetsampling calculated using jet::getmoment(string ) */
-  void fill_jetlayermoments( jet * j, jetsampling* js);
+  void fill_jetlayermoments( const jet * j, jetsampling* js);
 
   /** fills the energy in layers into jetsampling calculated from the cells */
-  void fill_jetsampling( jet*, jetsampling* );
+  void fill_jetsampling( const jet*, jetsampling* );
 
   /** fills the cell energy density into jetsampling for h1 used */ 
-  void fill_jetecs( jet*, jetsampling* );
+  void fill_jetecs( const jet*, jetsampling* );
 
   /** fills the radial profiles calcualted from calo cells into jetsampling */
-  void fill_jetradialcones( jet*, jetsampling* );
+  void fill_jetradialcones( const jet*, jetsampling* );
 
   // removed:  void fill_jetatlfast_h1(jet *, jetsampling*);
   // removed: void fill_jetsums( jet*, jetsampling* );
index: src/jetclassifier.cxx
===================================================================
--- src/jetclassifier.cxx	(revision 447210)
+++ src/jetclassifier.cxx	(working copy)
@@ -75,7 +75,7 @@
 }
 
 void 
-jetclassifier::fill_jetradialcones( jet* j, jetsampling* js )
+jetclassifier::fill_jetradialcones( const jet* j, jetsampling* js )
 {
   double jeteta = j-&gt;eta();
   double jetphi = j-&gt;phi();
@@ -161,7 +161,7 @@
 }
 
 void 
-jetclassifier::fill_jetlayermoments( jet * j, jetsampling* js)
+jetclassifier::fill_jetlayermoments( const jet * j, jetsampling* js)
 {
 
   //cout &lt;&lt; &quot; --------- getmoment-----------------------&quot; &lt;&lt; endl;
@@ -282,7 +282,7 @@
 
 
 void
-jetclassifier::fill_jetsampling(jet* j, jetsampling* js)
+jetclassifier::fill_jetsampling(const jet* j, jetsampling* js)
 {
   //msgstream mlog(messageservice(), name());
   //msgstream mlog(msgsvc(), name());
@@ -500,7 +500,7 @@
   
 }
 
-void jetclassifier::fill_jetatlfast_sampling( jet* j, jetsampling* js)
+void jetclassifier::fill_jetatlfast_sampling( const jet* j, jetsampling* js)
 {
   using atlfast::itwocptcell;
 
@@ -610,7 +610,7 @@
 
 
 void
-jetclassifier::fill_jetecs(jet* j, jetsampling* js)
+jetclassifier::fill_jetecs(const jet* j, jetsampling* js)
 {
   // fill the jetecs variables into jetsampling collection
   // jetecs are cell energy density with finer granularity used for h1-layer method
-verbatim-
