Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:14:27

0001 #include <TFile.h>
0002 #include <TTree.h>
0003 #include <TString.h>
0004 #include <TChain.h>
0005 
0006 
0007 #if not defined(__CINT__) || defined(__MAKECINT__)
0008 // needs to be included when makecint runs (ACLIC)
0009 #include "TMVA/Factory.h"
0010 #include "TMVA/Tools.h"
0011 #endif
0012 
0013 
0014 
0015 TChain* handleFile(string name, string extension, string treename, int filecount){
0016   TChain *all = new TChain(treename.c_str());
0017   string temp;
0018   for (int i = 0; i < filecount; ++i)
0019   {
0020 
0021     ostringstream s;
0022     s<<i;
0023     temp = name+string(s.str())+extension;
0024     all->Add(temp.c_str());
0025   }
0026   return all;
0027 }
0028 
0029 
0030 void makeFactory(TTree* signalTree, TTree* backTree,std::string outfile,std::string factoryname, TTree* bgTree2=NULL)
0031 {
0032   using namespace TMVA;
0033   TString jobname(factoryname.c_str());
0034   TFile *targetFile = new TFile(outfile.c_str(),"RECREATE");
0035   Factory *factory = new Factory(jobname,targetFile);
0036   factory->AddSignalTree(signalTree,1.0);
0037   factory->AddBackgroundTree(backTree,1.0);
0038   if(bgTree2){
0039     factory->AddBackgroundTree(bgTree2,1.0);
0040   }
0041   factory->AddSpectator("track_layer",'I');
0042   factory->AddSpectator("track_pT",'F');
0043   factory->AddSpectator("track_dca",'F');
0044   factory->AddSpectator("cluster_prob",'F');
0045   factory->AddSpectator("abs(track_deta)",'F');
0046   factory->AddSpectator("abs(cluster_deta)",'F');
0047   factory->AddSpectator("abs(cluster_dphi)",'F');
0048   factory->AddSpectator("abs(track_dlayer)",'I');
0049   factory->AddSpectator("approach_dist",'F');
0050   factory->AddVariable("vtx_radius",'F');
0051 //  factory->AddVariable("vtx_chi2",'F'); 
0052   //factory->AddVariable("vtxTrackRZ_dist",'F');
0053   //factory->AddVariable("abs(vtxTrackRPhi_dist-vtxTrackRZ_dist)",'F');
0054   factory->AddVariable("photon_m",'F');
0055   factory->AddVariable("photon_pT",'F');
0056 
0057   string track_layer_cut = "track_layer>-1.";
0058   string track_pT_cut = "track_pT>2.0";
0059   string track_dca_cut = "50>track_dca>0";
0060   string em_prob_cut = "cluster_prob>-0.1";
0061   string track_deta_cut = ".0082>=track_deta";
0062   string track_dlayer_cut = "2>=abs(track_dlayer)";
0063   string approach_dist_cut = "69.34>approach_dist>0";
0064   string vtx_radius_cut = "vtx_radius>0";
0065   //do I need photon cuts? 
0066   string tCutInitializer = track_pT_cut+"&&"+em_prob_cut+"&&"+track_layer_cut;//+"&&"+track_deta_cut+"&&"+track_dlayer_cut+"&&"+approach_dist_cut+"&&"+vtx_radius_cut;
0067   TCut preTraingCuts(tCutInitializer.c_str());
0068 
0069   factory->PrepareTrainingAndTestTree(preTraingCuts,"nTrain_Signal=0:nTrain_Background=0:nTest_Signal=0:nTest_Background=0");
0070   //for track training
0071   //factory->BookMethod(Types::kCuts,"Cuts");
0072   //for pair training
0073   //factory->BookMethod(Types::kCuts,"Cuts","CutRangeMin[0]=0:CutRangeMax[0]=1:CutRangeMin[1]=-100:CutRangeMax[1]=100:CutRangeMin[2]=0:CutRangeMax[2]=100");
0074   //for vtx training
0075   factory->BookMethod(Types::kCuts,"Cuts");
0076   factory->TrainAllMethods();
0077   factory->TestAllMethods();
0078   factory->EvaluateAllMethods();
0079   targetFile->Write();
0080   targetFile->Close();
0081 }
0082 
0083 
0084 int train(){
0085   using namespace std;
0086   string treePath = "/sphenix/user/vassalli/RecoConversionTests/truthconversionembededonlineanalysis";
0087   string treeExtension = ".root";
0088   string outname = "cutTrainA.root";
0089   unsigned int nFiles=100;
0090   
0091   /*TChain *backVtxTree = new TChain("vtxBackTree");
0092   TChain *signalTree = new TChain("cutTreeSignal");
0093   backVtxTree->Add(treePath.c_str());
0094   signalTree->Add(treePath.c_str());*/
0095   TChain *signalTree = handleFile(treePath,treeExtension,"cutTreeSignal",nFiles);
0096   TChain *backtrackTree = handleFile(treePath,treeExtension,"trackBackTree",nFiles);
0097   TChain *backpairTree = handleFile(treePath,treeExtension,"pairBackTree",nFiles);
0098   TChain *backVtxTree = handleFile(treePath,treeExtension,"vtxBackTree",nFiles);
0099   //makeFactory(signalTree,backtrackTree,outname,"trackback");
0100   //makeFactory(signalTree,backpairTree,outname,"pairback");
0101   makeFactory(signalTree,backVtxTree,outname,"vtxback");
0102 /*  outname="cutTrainE.root";
0103   makeFactory(signalTree,backETree,outname,"eback");*/
0104 }