Hello.
Once I stored array values in a .root and read it from .root file ,it causes some memory problem.(I am not sure exact problem)
So what I thought store my array in a txt file and read it from txt file.But I am not sure how exactly do that.
Here is my code.
void matrix_multiplication(){
const int nx=3,nQ2=4,ntmin_t=10,n_weight=6;
ofstream myfile1;
myfile1.open("Ai_val.txt");
// TFile *hFile1=TFile::Open("Inverse_matrix_Gen_1011.root");
TFile *hFile1=TFile::Open("Inverse_matrix_change_simu_N0_testing.root");
hFile1->ls();
// TFile *hFile2=TFile::Open("Data_vec.root");
TFile *hFile2=TFile::Open("Data_vector_IntLumi_N0_3.root");
hFile2->ls();
TFile *AnaFile = new TFile("Store_Ai_simu.root", "RECREATE");
char MatrixName_1[64];
char MatrixName_2[64];
char MatrixName_3[64];
char MatrixName_4[64];
TVectorD Data_array_vec;
TVectorD Data_array_sum;
TMatrixD MatrixInvGEN;
TMatrixD MatrixInvSIMU;
TVectorD Extracted_coefficient;
TVectorD Model_Matrix;
TVectorD Model_Matrix_ln;
float A_val[nx][nQ2][ntmin_t][n_weight]={{{{0}}}};
for(int ixB=0; ixB<nx; ixB++){
for(int iQ2=0; iQ2<nQ2; iQ2++){
for(int itmin_t=0 ; itmin_t < ntmin_t; itmin_t++){
sprintf(MatrixName_1,"MatrixInvGEN_xB%03d_iQ2%03d_tmin%03d",ixB,iQ2,itmin_t);
sprintf(MatrixName_2,"Data_array_vec_xB%03d_iQ2%03d_tmin%03d",ixB,iQ2,itmin_t);
sprintf(MatrixName_3,"Data_array_sum_xB%03d_iQ2%03d_tmin%03d",ixB,iQ2,itmin_t);
sprintf(MatrixName_4,"matInv_ACC_xB%03d_iQ2%03d_tmin%03d",ixB,iQ2,itmin_t);
(MatrixInvGEN).ResizeTo(6, 6);
MatrixInvGEN = *((TMatrixD*)(hFile1->Get(MatrixName_1)));
(MatrixInvSIMU).ResizeTo(6, 6);
MatrixInvSIMU = *((TMatrixD*)(hFile1->Get(MatrixName_4)));
(Data_array_vec).ResizeTo(6);
Data_array_vec = *((TVectorD*)(hFile2->Get(MatrixName_2)));
(Data_array_sum).ResizeTo(6);
Data_array_sum = *((TVectorD*)(hFile2->Get(MatrixName_3)));
//Here we need to calculate the Equation.11 in the note Ai= M_{ij}^-1 V_{j}^{Data}
(Extracted_coefficient).ResizeTo(6);
Extracted_coefficient=MatrixInvSIMU*Data_array_vec;
Data_array_vec.Print();
MatrixInvSIMU.Print();
Extracted_coefficient.Print();
for(int i_Simu=0 ; i_Simu < nweight; i_Simu++){
A_val[ixB][iQ2][itmin_t][i_SImu]= Extracted_coefficient[i_SImu];
printf("[%d][%d][%d][%d]=%f\n",ixB,iQ2,itmin_t,i_Simu,A_val[ixB][iQ2][itmin_t][i_Simu]);
// A_val[ixB][iQ2][itmin_t][i_DATA]->Write(Form("A_val_xB%03d_iQ2%03d_tmin%03d_iData%03d",ixB,iQ2,itmin_t,i_DATA));
TParameter<float> p(Form("A_val_xB%03d_iQ2%03d_tmin%03d_iSimu%03d",ixB,iQ2,itmin_t,i_Simu), A_val[ixB][iQ2][itmin_t][i_Simu]); p.Write();
myfile1 <<A_val[ixB][iQ2][itmin_t][i_SImu] << "\n";
}
}
}
}
myfile1.close();
AnaFile->Write();
AnaFile->Close();
}
I stored in a txt file.(Not sure if it is correct.)
Now I want to know how I read this exact array values read from the txt file.(I know how to read it from the txt file but I am not sure how to pick correct value from an array)