The Way to Programming
The Way to Programming
So I’m just starting out in C++ and I managed to convert an image into a text file which contains: x y intensity values.
So this is an example of the file:
1 1 0.00 1 2 2.10 1 3 0.00 1 4 76.20 1 5 0.00 1 6 0.00 1 7 0.00
The code I’m writing is in C++ but is actually processed in root.
The code I’ve started writing is:
using std::cout; using std::endl; using std::string; string fOutFileName("gaintest.root"); void Usage(); void ParseArgs(int argc, char **argv); int main(int argc, char * argv[]) { ParseArgs(argc, argv); TH2D * p001_1 = new TH2D("p001_1","p001_1",640,0,640,480,0,480) std::ifstream file1("data_p30.dat"); int x, y; double intensity; double getarray[640,480] if (file1.is_open()) { file1.seekg(0); while (!file1.eof()) { file1 >> x >> y >> intensity; p001_1->; //HELP HERE } file1.close(); } else cout << "Error, cannot open file 1"; }
Now the part with "p001_1->" is where I'm tripping up, ultimately I'd like an array that looks something like this:
myarray[x,y]=intensity
where I can pick which x,y values I want for it to spit out the intensity value. The only catch is I need those x,y values to correspond to the values in the file. I know I'm close, but I just need a little help over the final hurdle =P
THANKS =)
P.S I've sort of found a solution:
Code: Select all
p001_1->SetBinContent(x,y,intensity);
BUT this isn't brilliant for what I need it for next (taking certain areas of the picture and finding the difference of the intensities)
EDIT:
std::ifstream file1("data_p30.dat"); //int x, y; //double intensity; //double getarray[640,480]; int i; int j ; double c[1000,1000]; if (file1.is_open()) { file1.seekg(0); while (!file1.eof()) { file1 >> i >> j >> c[i,j]; cout<but then I get this error:
46: error: expected `]' before ‘,’ token 46: error: expected unqualified-id before numeric constant 50: error: ‘c’ was not declared in this scope 50:warning: left-hand operand of comma has no effectI appreciate you don't know the line numbers, but I think it really doesn't like the way I'm defining the variables
So on http://root.cern.ch/root/html/src/TH2D.h.html#kvMDeC
It seems to be saying there is a function for:
virtual Double_t GetBinContent(Int_t binx, Int_t biny)
So wouldn’t you be able to just use that instead of making the array of doubles?
But if you really want to make the array of doubles, I don’t think you can initialize with
c[1000,1000]
I think you’d need to use
c[1000][1000]
You can see this in the error where it says the operand of comma has no effect and that it expects to see an end bracket
Sign in to your account