diff --git a/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GlobalChi2Fitter.cxx b/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GlobalChi2Fitter.cxx
index a0e4bba9d1cdf118e199ae8f0e8a784c381bfbb6..df49a49bad401e778e35e92247282b5ee7239066 100755
--- a/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GlobalChi2Fitter.cxx
+++ b/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GlobalChi2Fitter.cxx
@@ -4918,9 +4918,9 @@ public:
       int scatmax = (scatno < nscatupstream) ? nscatupstream : scatno;
       int bremmin = (bremno < nbremupstream) ? bremno : nbremupstream;
       int bremmax = (bremno < nbremupstream) ? nbremupstream : bremno;
-      HepMatrix &derivatives = state->derivatives();
 
       if (statetype == TrackState::Fittable) {
+        HepMatrix &derivatives = state->derivatives();
         double sinstereo = 0;
         if (hittype == TrackState::SCT || hittype == TrackState::TGC) {
           sinstereo = state->sinStereo();
@@ -6846,7 +6846,6 @@ public:
     GXFTrackState *prevstate = 0, *state = 0;
     for (int hitno = nstatesupstream - 1; hitno >= 0; hitno--) {
       state = states[hitno];
-      HepMatrix &derivmat = state->derivatives();
       bool fillderivmat = false;
       TrackState::TrackStateType tstype = state->trackStateType();
       if (tstype != TrackState::Scatterer && tstype != TrackState::Brem) {
@@ -6907,6 +6906,7 @@ public:
             jacscat[scatindex](4, 4) = jac[4][4] * jacscat[scatindex](4, 4);
           }
           if (fillderivmat) {
+            HepMatrix &derivmat = state->derivatives();
             for (int i = 0; i < 4; i++) {
               derivmat[i][nperpars + 2 * scatindex] = -jacscat[scatindex](i, 2);
               derivmat[i][nperpars + 2 * scatindex + 1] = -jacscat[scatindex](i, 3);
@@ -6941,6 +6941,7 @@ public:
              state->materialEffects()->momentumJacobians()[bremindex+1]=jacbrem[bremindex](4,4)*ploc*ploc/(jac[4][4]*pbrem[bremindex]*pbrem[bremindex]);
              } */
           if (fillderivmat) {
+            HepMatrix &derivmat = state->derivatives();
             // double p=pbrem[bremindex];
             // for (int i=0;i<5;i++)
             // derivmat[i][nperpars+2*nscats+bremindex]=0.001*jacbrem[bremindex](i,4)*(sign/(p*p));
@@ -6970,6 +6971,7 @@ public:
          state->materialEffects()->momentumJacobians()[0]=jacvertex(4,4)/jac[4][4];
          } */
       if (fillderivmat) {
+        HepMatrix &derivmat = state->derivatives();
         for (int i = 0; i < 4; i++) {
           for (int j = 0; j < nperpars; j++) {
             derivmat[i][j] = jacvertex(i, j);
@@ -6999,7 +7001,6 @@ public:
 
     for (int hitno = nstatesupstream; hitno < (int) states.size(); hitno++) {
       state = states[hitno];
-      HepMatrix &derivmat = state->derivatives();
       bool fillderivmat = false;
       TrackState::TrackStateType tstype = state->trackStateType();
       int imax = 3;
@@ -7064,6 +7065,7 @@ public:
             jacscat[scatindex](4, 4) = jacscat[scatindex](4, 4) * jac[4][4];
           }
           if (fillderivmat) {
+            HepMatrix &derivmat = state->derivatives();
             for (int i = 0; i <= imax; i++) {
               derivmat[i][nperpars + 2 * scatindex] = jacscat[scatindex](i, 2);
               derivmat[i][nperpars + 2 * scatindex + 1] = jacscat[scatindex](i, 3);
@@ -7100,6 +7102,7 @@ public:
              } */
 
           if (fillderivmat) {
+            HepMatrix &derivmat = state->derivatives();
             // double p=pbrem[bremindex];
             for (int i = 0; i <= 4; i++) {
               // derivmat[i][nperpars+2*nscats+bremindex]=.001*jacbrem[bremindex](i,4)*(-sign/(p*p));
@@ -7128,6 +7131,7 @@ public:
          } */
 
       if (fillderivmat) {
+        HepMatrix &derivmat = state->derivatives();
         for (int i = 0; i <= imax; i++) {
           for (int j = 0; j < nperpars; j++) {
             derivmat[i][j] = jacvertex(i, j);