ROOT logo
// provided by Gamma Conversion Group, PWGGA, Kathrin Koch, kkoch@physi.uni-heidelberg.de

#include <Riostream>
#include <fstream>
using namespace std;

void MakeCutLog(const char *inputRootFile = "AnalysisResults",const char *path = "./", const char* outputDir="./Output/"){

  fstream outputFile(Form("%sCutSelection.log",outputDir),ios::out);
  if(!outputFile.is_open()){
    cout<<"Problem opening file"<<endl;
    return;
  }

  //  Char_t filename_input1[200] = (Form("%s%s",path,input1));	
  TString filename = Form("%s%s.root",path,inputRootFile);	
  TFile f(filename.Data());  

  TList *directories = f.GetListOfKeys(); // get the list of directories in the file
  
  for(Int_t entFile=0;entFile<directories->GetEntries();entFile++){

    TObject * o = f.Get(directories->At(entFile)->GetName()); // get the object in the base directory

    if(TString(o->IsA()->GetName())=="TDirectoryFile"){ // means that this is a directory (PWGGA......)
      
      TDirectory *pwg4dir =(TDirectory*)o;
 
      TString baseDirName = pwg4dir->GetName();
      
      TString reconstructionFlagString = ""; // this is for new scheme where also the flags are coded in numbers in the PWGGA.... name

      if(baseDirName.Length()>31){
	reconstructionFlagString = baseDirName(baseDirName.Index("GammaConversion_")+16,8);
      }
      
      TList *pwg4list = pwg4dir->GetListOfKeys(); // list of the yeys inside the base directory

      for(Int_t entHist=0;entHist<pwg4list->GetEntries();entHist++){
	TString name = pwg4list->At(entHist)->GetName();

	if(name.Contains("container")==0){ // does not try to read the container (get errors if tried)
	  TObject * oHist = pwg4dir->Get(pwg4list->At(entHist)->GetName()); // get the object 
	  
	  if(TString(oHist->IsA()->GetName())=="TList"){ // check if the object is a TList
	    
	    TString listname = oHist->GetName();
	    cout<<"Reading: "<<listname.Data()<<endl;
	    
	    TString cutString = listname(listname.Index("_")+1,listname.Length()) + "\n";// get the Cut string from the name


	    outputFile << cutString.Data();
	  }
	}
      }
    }
  }
  outputFile.close();
}
 MakeCutLog.C:1
 MakeCutLog.C:2
 MakeCutLog.C:3
 MakeCutLog.C:4
 MakeCutLog.C:5
 MakeCutLog.C:6
 MakeCutLog.C:7
 MakeCutLog.C:8
 MakeCutLog.C:9
 MakeCutLog.C:10
 MakeCutLog.C:11
 MakeCutLog.C:12
 MakeCutLog.C:13
 MakeCutLog.C:14
 MakeCutLog.C:15
 MakeCutLog.C:16
 MakeCutLog.C:17
 MakeCutLog.C:18
 MakeCutLog.C:19
 MakeCutLog.C:20
 MakeCutLog.C:21
 MakeCutLog.C:22
 MakeCutLog.C:23
 MakeCutLog.C:24
 MakeCutLog.C:25
 MakeCutLog.C:26
 MakeCutLog.C:27
 MakeCutLog.C:28
 MakeCutLog.C:29
 MakeCutLog.C:30
 MakeCutLog.C:31
 MakeCutLog.C:32
 MakeCutLog.C:33
 MakeCutLog.C:34
 MakeCutLog.C:35
 MakeCutLog.C:36
 MakeCutLog.C:37
 MakeCutLog.C:38
 MakeCutLog.C:39
 MakeCutLog.C:40
 MakeCutLog.C:41
 MakeCutLog.C:42
 MakeCutLog.C:43
 MakeCutLog.C:44
 MakeCutLog.C:45
 MakeCutLog.C:46
 MakeCutLog.C:47
 MakeCutLog.C:48
 MakeCutLog.C:49
 MakeCutLog.C:50
 MakeCutLog.C:51
 MakeCutLog.C:52
 MakeCutLog.C:53
 MakeCutLog.C:54
 MakeCutLog.C:55
 MakeCutLog.C:56
 MakeCutLog.C:57
 MakeCutLog.C:58
 MakeCutLog.C:59
 MakeCutLog.C:60
 MakeCutLog.C:61