Error: invalid types 'int[int]' for array subscript

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?

I’ve solved it. The mistake was that the array charge[] was named the same as my function argument int charge.