Hi,
I’m trying to run a macro that takes in efficiency values from a .txt file and fills them into an array. This piece of code looks like
int eta_bin[200] = {0};
int cent_bin[200] = {0};
//index 0 if not binned for charge
int charge[200] = {0};
void readInputFile(TString sFileIn = "TrigEff_Sep22.txt"){
//ifstream s(sFileIn);
std::ifstream s( sFileIn , std::ifstream::in );
if(!s.is_open()){
std::cout << "While opening a file an error was encountered" << std::endl;
exit(1);
} else {
std::cout << "File " << sFileIn << " is successfully opened" << std::endl;
}
unsigned int i = 0;
while(!s.eof()) {
//s >> pt_min[i] >> pt_max[i] >> eta_min[i] >> eta_max[i] >> cent_min[i] >> cent_max[i] >> trig_eff[i] >> trig_err[i];
s >> charge[i] >> eta_bin[i] >> cent_bin[i] >> trig_eff[i] >> trig_err[i];
std::cout << i << " " << charge[i] << " " << eta_bin[i] << " " << cent_bin[i] << " " << trig_eff[i] << " " << trig_err[i] << std::endl;
//s >> charge[i] >> eta_min[i] >> eta_max[i] >> cent_bin[i] >> trig_eff[i] >> trig_err[i];
++i;
}
}
The above code works fine, but the function below causes problems
double trigEfficiency(int charge, int etaBin, int centralityBin){
std::cout << charge << ":" << etaBin << ":" << centralityBin << std::endl;
int index = -1;
for(int i=0;i<200;++i){
if( charge == charge[i] && etaBin == eta_bin[i] && centralityBin == cent_bin[i] )
{
std::cout << i << " " << charge[i] << " " << eta_bin[i] << " " << cent_bin[i] << " " << trig_eff[i] << " " << trig_err[i] << std::endl;
index = i;
break;
}
}
if(index==-1){
return -999.0;
} else {
std::cout << "trigger eff: " << trig_eff[index] << std::endl;
return trig_eff[index];
}
}
when running with myMacro.C+, I get the following errors.
/afs/cern.ch/user/t/tbalestr/public/17.2.2.2/HIDP3DAnalysis2011/code/./TriggerEfficiencies.C: In function 'double trigEfficiency(int, int, int)':
/afs/cern.ch/user/t/tbalestr/public/17.2.2.2/HIDP3DAnalysis2011/code/./TriggerEfficiencies.C:43: error: invalid types 'int[int]' for array subscript
/afs/cern.ch/user/t/tbalestr/public/17.2.2.2/HIDP3DAnalysis2011/code/./TriggerEfficiencies.C:45: error: invalid types 'int[int]' for array subscript
/afs/cern.ch/user/t/tbalestr/public/17.2.2.2/HIDP3DAnalysis2011/code/./TriggerEfficiencies.C: In function 'double trigEfficiencyErr(int, int, int)':
/afs/cern.ch/user/t/tbalestr/public/17.2.2.2/HIDP3DAnalysis2011/code/./TriggerEfficiencies.C:68: error: invalid types 'int[int]' for array subscript
Any ideas?