#include <stdio.h>
#define MAXPARAMETER 10
TNtuple* makeGpNtuple(const Char_t *fileName) {
Int_t iParameters = 0;
TString fileStructure;
TString ntupleName;
TString ntupleTitle;
bool skipFirst=kFALSE;
// decide ntuple structure
if(TString(fileName).Contains("lumi.ee.out")) {
iParameters = 9;
fileStructure = TString("e1:e2:x:y:z:vx1:vy1:vx2:vy2");
}
else if(TString(fileName).Contains("lumi.dat")) {
iParameters = 5;
fileStructure = TString("e1:e2:x:y:z");
}
else if(TString(fileName).Contains("lumi.ee.outcat")) {
iParameters = 10;
fileStructure = TString("ievent:e1:e2:x:y:z:vx1:vy1:vx2:vy2");
cout << "outcat" << endl;
skipFirst=kTRUE;
}
else if(TString(fileName).Contains("pairs")) {
iParameters = 7;
fileStructure = TString("a:b:c:d:e:f:g");
}
else if(TString(fileName).Contains("beam")) {
iParameters = 6;
fileStructure = TString("e:vx:vy:x:y:z");
}
// add index to all files (can be important for some files)
//fileStructure = "i:"+fileStructure;
// create ntuple
TNtuple *nt = new TNtuple("gpNtuple","Guinea pig ntuple",fileStructure.Data());
// reset input values
Float_t dInputValues[MAXPARAMETER];
for(Int_t i=0;i<iParameters;i++) {
dInputValues[i] = 0.0;
}
//FILE *fp=fopen(fileName,"r");
Int_t iEntry=0;
Int_t scan;
ifstream ifstr(fileName,ios::in);
Int_t iEntry = 0;
while(ifstr) {
if (skipFirst==kTRUE){
ifstr >> dInputValues[0];
skipFirst=kFALSE;
cout << "skipping first line" << endl;
iEntry++;
continue;
}
for(Int_t i=0;i<iParameters;i++) {
ifstr >> dInputValues[i];
}
nt->Fill(dInputValues);
iEntry++;
}
// while(1){
// if (skipFirst==kTRUE){
// scan=fscanf(fp,"%f",&dInputValues[0]);
// skipFirst=kFALSE;
// iEntry++;
// continue;
// }
// scan = fscanf(fp,"%f %f %f %f %f %f %f %f %f %f",&dInputValues[0],
// &dInputValues[1],&dInputValues[2],&dInputValues[3],
// &dInputValues[4],&dInputValues[5],&dInputValues[6],
// &dInputValues[7],&dInputValues[8],&dInputValues[9]);
// if(scan < 0) break;
// nt->Fill( dInputValues );
// iEntry++;
// }
cout << iEntry << endl;
// return ntuple
return nt;
}