SC analysis compiles but fails at initialization of adc2d vectors
This commit is contained in:
@ -74,8 +74,8 @@ int main(int argc, char* argv[]) {
|
||||
//char savename[128];
|
||||
char histoname[256]; // VH 210902
|
||||
char savename[256]; // VH 210902
|
||||
int filen = 352;
|
||||
int pedefilen = 5;
|
||||
int filen = 16;
|
||||
int pedefilen = 1;
|
||||
|
||||
// create necessary directories with permissions drwxrwxr-x
|
||||
// data/Mxxx
|
||||
@ -119,14 +119,15 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
jungfrauFile *thisfile = new jungfrauFile();
|
||||
|
||||
vector<jungfrauPedestal*> pedestalObject_SC(NSC); //should call default constructor 16 times
|
||||
vector<jungfrauPedestal*> pedestalObject_SC; //( NSC, new jungfrauPedestal() ); //should call default constructor 16 times
|
||||
pedestalObject_SC.reserve(NSC);
|
||||
vector<TH2F*> pedestalsG0;
|
||||
pedestalsG0.reserve(NSC);
|
||||
vector<TH2F*> pedeRMSG0;
|
||||
pedeRMSG0.reserve(NSC);
|
||||
for (int sci = 0; sci < NSC; ++sci) {
|
||||
//pedestalObject_SC[sci] = new jungfrauPedestal();
|
||||
pedestalObject_SC[sci]->pedestalSetNFrames(100);
|
||||
pedestalObject_SC.push_back( new jungfrauPedestal() );
|
||||
pedestalObject_SC.at(sci)->pedestalSetNFrames(100);
|
||||
|
||||
Char_t *pedehistoname = new Char_t[50];
|
||||
snprintf( pedehistoname, 50, "pedestalsG0_sc%d", sci );
|
||||
@ -134,8 +135,8 @@ int main(int argc, char* argv[]) {
|
||||
snprintf( pedehistoname, 50, "pedeRMSG0_sc%d", sci );
|
||||
pedeRMSG0.push_back( new TH2F( pedehistoname, "", NC, -0.5, NC-0.5, NR, -0.5, NR-0.5 ) );
|
||||
}
|
||||
static vector< vector<uint16_t> > pedestals16_G0_start( NSC, vector<uint16_t>(NCH) ); //I suppose, this is to track pedestal shifting over the course of data taking
|
||||
static vector< vector<double> > pedeRMS16_G0( NSC, vector<double>(NCH) );
|
||||
vector< vector<uint16_t> > pedestals16_G0_start( NSC, vector<uint16_t>(NCH) ); //I suppose, this is to track pedestal shifting over the course of data taking
|
||||
vector< vector<double> > pedeRMS16_G0( NSC, vector<double>(NCH) );
|
||||
|
||||
for (int pedefilei = 0; pedefilei < pedefilen; ++pedefilei) {
|
||||
|
||||
@ -155,7 +156,7 @@ int main(int argc, char* argv[]) {
|
||||
// calculate pixel mask
|
||||
pixelMaskObject->maskIfGainNot( 0, thisfile->getFrameDataHandle(), pixel_mask );
|
||||
// caluclate pedestals
|
||||
pedestalObject_SC[ thisfile->currentSCnumber() ]->addFrameToPedestalCalculation( thisfile->getFrameDataHandle() );
|
||||
pedestalObject_SC.at( thisfile->currentSCnumber() )->addFrameToPedestalCalculation( thisfile->getFrameDataHandle() );
|
||||
}
|
||||
|
||||
thisfile->close();
|
||||
@ -165,13 +166,13 @@ int main(int argc, char* argv[]) {
|
||||
for (int sci = 0; sci < NSC; ++sci) {
|
||||
for (int i = 0; i < NCH; ++i) {
|
||||
if (pixel_mask[i] == true) {
|
||||
pedestalsG0[sci]->Fill( i%NC, i/NC, pedestalObject_SC[sci]->pedestalOfChannel(i) );
|
||||
pedeRMSG0[sci]->Fill( i%NC, i/NC, pedestalObject_SC[sci]->rmsOfChannel(i) );
|
||||
pedestalsG0.at(sci)->Fill( i%NC, i/NC, pedestalObject_SC[sci]->pedestalOfChannel(i) );
|
||||
pedeRMSG0.at(sci)->Fill( i%NC, i/NC, pedestalObject_SC[sci]->rmsOfChannel(i) );
|
||||
}
|
||||
}
|
||||
pedestalObject_SC[sci]->pedestalData((uint16_t*)(&pedestals16_G0_start[sci])); //this loads the pedestal data into the array pedestals16_G0_start
|
||||
pedestalObject_SC[sci]->pedestalRMSData(pedeRMS16_G0[sci].data()); //same here
|
||||
pedestalObject_SC[sci]->pedestalResetUpdates();
|
||||
pedestalObject_SC.at(sci)->pedestalData((uint16_t*)(pedestals16_G0_start.at(sci).data())); //this loads the pedestal data into the array pedestals16_G0_start
|
||||
pedestalObject_SC.at(sci)->pedestalRMSData(pedeRMS16_G0[sci].data()); //same here
|
||||
pedestalObject_SC.at(sci)->pedestalResetUpdates();
|
||||
//pedestalObject[sci]->pedestalClear(); //I don't need to clear if I only calculate pedestal once.
|
||||
}
|
||||
|
||||
@ -203,7 +204,15 @@ int main(int argc, char* argv[]) {
|
||||
int adc2d_nbin= 1200;
|
||||
if (isJF11) adc2d_nbin= 1600;
|
||||
|
||||
vector< vector <TH2I*> > adc2d; //(8, vector <TH2I*>(16) ); //declare
|
||||
vector <TH2I*> adc2d_1; //(8, vector <TH2I*>(16) ); //declare
|
||||
vector <TH2I*> adc2d_2;
|
||||
vector <TH2I*> adc2d_3;
|
||||
vector <TH2I*> adc2d_4;
|
||||
vector <TH2I*> adc2d_5;
|
||||
vector <TH2I*> adc2d_6;
|
||||
vector <TH2I*> adc2d_7;
|
||||
vector <TH2I*> adc2d_8;
|
||||
//adc2d.reserve(8);
|
||||
/*
|
||||
TH2I *adc2d_2[16]; = new TH2I("adc2d_2","",adc2d_nbin,-200-0.5,adc2d_nbin-200-0.5,65536,(65536*1-0.5),(65536*2-0.5));
|
||||
TH2I *adc2d_3[16]; = new TH2I("adc2d_3","",adc2d_nbin,-200-0.5,adc2d_nbin-200-0.5,65536,(65536*2-0.5),(65536*3-0.5));
|
||||
@ -214,17 +223,35 @@ int main(int argc, char* argv[]) {
|
||||
TH2I *adc2d_8[16]; = new TH2I("adc2d_8","",adc2d_nbin,-200-0.5,adc2d_nbin-200-0.5,65536,(65536*7-0.5),(65536*8-0.5));
|
||||
*/
|
||||
|
||||
//initilaize
|
||||
for ( int adci = 0; adci < 8; ++adci ) {
|
||||
vector<TH2I*> v;
|
||||
v.reserve(NSC);
|
||||
cout << "Initialize vector of vectors..." << endl;
|
||||
|
||||
//initialize
|
||||
//for ( int adci = 0; adci < 8; ++adci ) {
|
||||
//vector<TH2I*> v;
|
||||
//v.reserve(NSC);
|
||||
for ( int sci = 0; sci < NSC; ++sci ) {
|
||||
Char_t *_histoname = new Char_t[50];
|
||||
snprintf( _histoname, 50, "adc2d_%d_sc%d", (adci+1), sci );
|
||||
v.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*adci-0.5 ), ( 65536*( adci+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_1_sc%d", sci );
|
||||
adc2d_1.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*0-0.5 ), ( 65536*( 0+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_2_sc%d", sci );
|
||||
adc2d_2.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*1-0.5 ), ( 65536*( 1+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_3_sc%d", sci );
|
||||
adc2d_3.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*2-0.5 ), ( 65536*( 2+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_4_sc%d", sci );
|
||||
adc2d_4.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*3-0.5 ), ( 65536*( 3+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_5_sc%d", sci );
|
||||
adc2d_5.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*4-0.5 ), ( 65536*( 4+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_6_sc%d", sci );
|
||||
adc2d_6.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*5-0.5 ), ( 65536*( 5+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_7_sc%d", sci );
|
||||
adc2d_7.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*6-0.5 ), ( 65536*( 6+1 )-0.5 ) ) );
|
||||
snprintf( _histoname, 50, "adc2d_8_sc%d", sci );
|
||||
adc2d_8.push_back( new TH2I( _histoname, "", adc2d_nbin, -200-0.5, adc2d_nbin-200-0.5, 65536, ( 65536*7-0.5 ), ( 65536*( 7+1 )-0.5 ) ) );
|
||||
}
|
||||
adc2d.push_back(v);
|
||||
}
|
||||
//adc2d.push_back(v);
|
||||
//}
|
||||
|
||||
cout << "Done." << endl;
|
||||
|
||||
//declare
|
||||
vector<TH1D*> adcpc_spec;
|
||||
@ -233,6 +260,8 @@ int main(int argc, char* argv[]) {
|
||||
pede_updates.reserve(NSC);
|
||||
vector<TH2F*> pede_diff;
|
||||
pede_diff.reserve(NSC);
|
||||
|
||||
cout << "Initialize vectors of histograms..." << endl;
|
||||
|
||||
//initialize
|
||||
for ( int sci = 0; sci < NSC; ++sci ) {
|
||||
@ -245,7 +274,7 @@ int main(int argc, char* argv[]) {
|
||||
pede_diff.push_back( new TH2F( _histoname, "", NC, -0.5, NC-0.5, NR, -0.5, NR-0.5 ) );
|
||||
}
|
||||
|
||||
//HERE!!!!
|
||||
cout << "Done." << endl;
|
||||
|
||||
for (int filei = 0; filei < filen; filei++) {
|
||||
|
||||
@ -258,7 +287,7 @@ int main(int argc, char* argv[]) {
|
||||
uint16_t* imagedptr = thisfile->getFrameDataHandle();
|
||||
uint64_t scnumber = thisfile->currentSCnumber();
|
||||
|
||||
pedestalObject_SC[scnumber]->addG0FrameToPedestalCalculationWThreshold( imagedptr, pedestalObject_SC[scnumber], pedeRMS16_G0[scnumber].data() );
|
||||
pedestalObject_SC.at(scnumber)->addG0FrameToPedestalCalculationWThreshold( imagedptr, pedestalObject_SC.at(scnumber), pedeRMS16_G0.at(scnumber).data() );
|
||||
|
||||
for (int i = 0; i < NCH; i++) {
|
||||
|
||||
@ -266,25 +295,25 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
if (gain == 0) {
|
||||
|
||||
int adcpc = (imagedptr[i]&0x3fff) - pedestalObject_SC[scnumber]->pedestalOfChannel(i);
|
||||
adcpc_spec[scnumber]->Fill(adcpc);
|
||||
int adcpc = (imagedptr[i]&0x3fff) - pedestalObject_SC.at(scnumber)->pedestalOfChannel(i);
|
||||
adcpc_spec.at(scnumber)->Fill(adcpc);
|
||||
|
||||
if (i < (65536*1)) {
|
||||
adc2d[0][scnumber]->Fill(adcpc,i);
|
||||
adc2d_1[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*2)) {
|
||||
adc2d[1][scnumber]->Fill(adcpc,i);
|
||||
adc2d_2[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*3)) {
|
||||
adc2d[2][scnumber]->Fill(adcpc,i);
|
||||
adc2d_3[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*4)) {
|
||||
adc2d[3][scnumber]->Fill(adcpc,i);
|
||||
adc2d_4[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*5)) {
|
||||
adc2d[4][scnumber]->Fill(adcpc,i);
|
||||
adc2d_5[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*6)) {
|
||||
adc2d[5][scnumber]->Fill(adcpc,i);
|
||||
adc2d_6[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*7)) {
|
||||
adc2d[6][scnumber]->Fill(adcpc,i);
|
||||
adc2d_7[scnumber]->Fill(adcpc,i);
|
||||
} else if (i < (65536*8)) {
|
||||
adc2d[7][scnumber]->Fill(adcpc,i);
|
||||
adc2d_8[scnumber]->Fill(adcpc,i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -338,11 +367,18 @@ int main(int argc, char* argv[]) {
|
||||
//sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/CuFluo_%s_file0to%d.root", module_str.c_str(), gain_str.c_str(), filen-1);
|
||||
sprintf(savename,"%s/CuFluo_%s_file0to%d.root", anadata_loc.c_str(), gain_str.c_str(), filen-1); //uncomment for VH 210906
|
||||
TFile* saved_file = new TFile((const char *)(savename),"RECREATE");
|
||||
for ( int adci = 0; adci < 8; ++adci ) {
|
||||
//for ( int adci = 0; adci < 8; ++adci ) {
|
||||
for ( int sci = 0; sci < 16; ++sci ) {
|
||||
adc2d[adci][sci]->Write();
|
||||
adc2d_1[sci]->Write();
|
||||
adc2d_2[sci]->Write();
|
||||
adc2d_3[sci]->Write();
|
||||
adc2d_4[sci]->Write();
|
||||
adc2d_5[sci]->Write();
|
||||
adc2d_6[sci]->Write();
|
||||
adc2d_7[sci]->Write();
|
||||
adc2d_8[sci]->Write();
|
||||
}
|
||||
}
|
||||
//}
|
||||
saved_file->Close();
|
||||
|
||||
} // end if i creatHistoFile
|
||||
|
Reference in New Issue
Block a user