@@ -42,6 +42,7 @@ CalibrationAlgorithm::EResult eclAutocovarianceCalibrationC3Algorithm::calibrate
4242 // /** vectors to store information for output root file */
4343 std::vector<double > cryIDs;
4444 std::vector<double > noiseMatrix00Vector;
45+ std::vector<double > autoCov00Vector;
4546 std::vector<double > totalCountsVector;
4647 std::vector<double > invertAttempts;
4748
@@ -53,6 +54,8 @@ CalibrationAlgorithm::EResult eclAutocovarianceCalibrationC3Algorithm::calibrate
5354
5455 for (int ID = 0 ; ID < ECLElementNumbers::c_NCrystals; ID++) {
5556
57+ m_u2 = 1.0 ; // Reseting
58+
5659 double totalCounts = CovarianceMatrixInfoVsCrysID->GetBinContent (CovarianceMatrixInfoVsCrysID->GetBin (ID + 1 ,
5760 m_numberofADCPoints + 1 ));
5861
@@ -106,19 +109,25 @@ CalibrationAlgorithm::EResult eclAutocovarianceCalibrationC3Algorithm::calibrate
106109 B2INFO (" eclAutocovarianceCalibrationC3Algorithm setting m_u2 to zero" );
107110 m_u2 = 0.0 ;
108111 }
112+ if (invert_attempt > 100 ) {
113+ B2INFO (" eclAutocovarianceCalibrationC3Algorithm unable to invert!" );
114+ return c_NotEnoughData;
115+ }
109116
110117 B2INFO (" eclAutocovarianceCalibrationC3Algorithm iD " << ID << " invert_attempt " << invert_attempt);
111118
112119 for (int i = 0 ; i < m_numberofADCPoints; i++) B2INFO (" old[" << i << " ] = " << tempAutoCov[i]);
113120 for (int i = 1 ; i < m_numberofADCPoints; i++) tempAutoCov[i] *= (m_u2 / (1 . + exp ((i - m_u0) / m_u1)));
114121 for (int i = 0 ; i < m_numberofADCPoints; i++) B2INFO (" new[" << i << " ] = " << tempAutoCov[i]);
115122
123+ } else {
124+ noiseMatrix00Vector.push_back (NoiseMatrix_check (0 , 0 ));
116125 }
117126 invert_attempt++;
118127 }
119128
120129 cryIDs.push_back (ID + 1 );
121- noiseMatrix00Vector .push_back (tempAutoCov[0 ]);
130+ autoCov00Vector .push_back (tempAutoCov[0 ]);
122131 totalCountsVector.push_back (totalCounts);
123132 invertAttempts.push_back (invert_attempt);
124133
@@ -128,6 +137,9 @@ CalibrationAlgorithm::EResult eclAutocovarianceCalibrationC3Algorithm::calibrate
128137 saveCalibration (Autocovariances, " ECLAutoCovariance" );
129138
130139 /* * Preparing TGraphs for output file */
140+ auto gautoCov00Vector = new TGraph (cryIDs.size (), cryIDs.data (), autoCov00Vector.data ());
141+ gautoCov00Vector->SetName (" gautoCov00Vector" );
142+ gautoCov00Vector->SetMarkerStyle (20 );
131143 auto gnoiseMatrix00Vector = new TGraph (cryIDs.size (), cryIDs.data (), noiseMatrix00Vector.data ());
132144 gnoiseMatrix00Vector->SetName (" gnoiseMatrix00Vector" );
133145 gnoiseMatrix00Vector->SetMarkerStyle (20 );
@@ -143,6 +155,7 @@ CalibrationAlgorithm::EResult eclAutocovarianceCalibrationC3Algorithm::calibrate
143155 TDirectory::TContext context;
144156 TFile* histfile = new TFile (fName , " recreate" );
145157 histfile->cd ();
158+ gautoCov00Vector->Write ();
146159 gnoiseMatrix00Vector->Write ();
147160 gtotalCountsVector->Write ();
148161 ginvertAttempts->Write ();
0 commit comments