Dear Sir,
I have few root files inside a sub directory (CB/modfit) of my current dir. I want to loop over these files. My files are named as
Bin_001_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_Minus24Minus193_cent0200.root
Bin_002_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus24Minus193_cent0200.root
Bin_003_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus24Minus193_cent0200.root
Bin_004_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_Minus193Minus15_cent0200.root
Bin_005_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus193Minus15_cent0200.root
Bin_006_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus193Minus15_cent0200.root
Bin_007_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus15Minus09_cent0200.root
Bin_008_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus15Minus09_cent0200.root
Bin_009_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus09Minus0_cent0200.root
Bin_010_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus09Minus0_cent0200.root
Bin_011_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_009_cent0200.root
Bin_012_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_009_cent0200.root
Bin_013_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_0915_cent0200.root
Bin_014_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_0915_cent0200.root
Bin_015_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_15193_cent0200.root
Bin_016_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_15193_cent0200.root
Bin_017_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_15193_cent0200.root
Bin_018_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65300_rap_Minus1616_cent0200.root
For some reason the order of the files is important to me.
I can loop over these using TSystemDirectory and TList as follows
vector<TString> ans;
TString basedir("CB/modfit/");
TString input("");
cout<<" basedir "<<basedir<<" input "<<input<<endl;
TSystemDirectory dir(input,basedir);
TList *files = dir.GetListOfFiles();
if (files) {
TIter next(files);
TSystemFile *file;
TString fname;
while ((file=(TSystemFile*)next())) {
fname = file->GetName();
if (!file->IsDirectory() && fname.EndsWith(".root")){
ans.push_back(basedir+fname);
}
}
}
But when I access the files from vector ans they are
Parsing file 0 / 18: CB/modfit/Bin_013_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_0915_cent0200.root
Parsing file 1 / 18: CB/modfit/Bin_017_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_15193_cent0200.root
Parsing file 2 / 18: CB/modfit/Bin_007_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus15Minus09_cent0200.root
Parsing file 3 / 18: CB/modfit/Bin_004_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_Minus193Minus15_cent0200.root
Parsing file 4 / 18: CB/modfit/Bin_003_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus24Minus193_cent0200.root
Parsing file 5 / 18: CB/modfit/Bin_005_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus193Minus15_cent0200.root
Parsing file 6 / 18: CB/modfit/Bin_010_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus09Minus0_cent0200.root
Parsing file 7 / 18: CB/modfit/Bin_015_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_15193_cent0200.root
Parsing file 8 / 18: CB/modfit/Bin_012_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_009_cent0200.root
Parsing file 9 / 18: CB/modfit/Bin_009_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus09Minus0_cent0200.root
Parsing file 10 / 18: CB/modfit/Bin_001_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt4065_rap_Minus24Minus193_cent0200.root
Parsing file 11 / 18: CB/modfit/Bin_011_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_009_cent0200.root
Parsing file 12 / 18: CB/modfit/Bin_014_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_0915_cent0200.root
Parsing file 13 / 18: CB/modfit/Bin_002_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_Minus24Minus193_cent0200.root
Parsing file 14 / 18: CB/modfit/Bin_008_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus15Minus09_cent0200.root
Parsing file 15 / 18: CB/modfit/Bin_016_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65100_rap_15193_cent0200.root
Parsing file 16 / 18: CB/modfit/Bin_018_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt65300_rap_Minus1616_cent0200.root
Parsing file 17 / 18: CB/modfit/Bin_006_FIT_MASS_MCPSI2SPR_PbP_Psi2S_DoubleCrystalBall_NoBkg_pt100300_rap_Minus193Minus15_cent0200.root
It looks to me that the files are being added in the vector ans in random order (or at least it looks random to me). I was hoping that someone can explain to me how the files are sorted in “GetListOfFiles()” command or tell me a way to maintain the order of files.
Thanks a lot for your help.
with regards,
Vineet
_ROOT Version:_ROOT 6.14/06
Platform: MacOs 10.13.6
Compiler: Not Provided