User Tools

Site Tools


root:storemcnumbers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
root:storemcnumbers [2009/01/07 14:25] – created decianmroot:storemcnumbers [2009/01/07 15:16] (current) decianm
Line 1: Line 1:
-====== Storing Monte Carlo numbers in a file ======+====== Storing Monte Carlo particle numbers in a file ======
 ===== Idea ===== ===== Idea =====
-When analyzing background using Monte Carlo truth information, it may be useful to check the real identity of a particle that was considered a Kaon, a Muon, etc.+When analyzing signal or background using Monte Carlo truth information, it may be useful to check the real identity of a particle that was considered a Kaon, a Muon, etc.
  
 The following script loops through the whole tree, calculates the percentage of the respective particle and saves the output in a textfile. It needs as input the tree with the truth-information (e.g. in an nTuple) and the name of the variable. Furthermore, the name of the output-file can be specified. The following script loops through the whole tree, calculates the percentage of the respective particle and saves the output in a textfile. It needs as input the tree with the truth-information (e.g. in an nTuple) and the name of the variable. Furthermore, the name of the output-file can be specified.
  
 ===== Code ===== ===== Code =====
-The code was written for [[addclasstoroot]].+The code was written for [[addclasstoroot|class which was added to ROOT]]. It should be straightforward to use it in a macro.
  
 +==== .hh File ====
 +
 +Add the following prototype to your **header-file**:
 +<code>
 + void storeMCNumbers(TTree* tree, const char* variablename, const char* filename = "BG_cat.txt");
 +</code>
 +
 +The last argument in the prototype gives the default name of the textfile, that is used as an output.
 +
 +==== .cc File ====
 +Add the following method to your **.cc-File** (mind the ''yourclass''!):
 <code> <code>
-void ana::storeMcNumbers(TTree* tree, const char* variablename, const char* filename ){+void yourclass::storeMCNumbers(TTree* tree, const char* variablename, const char* filename ){
      
   // --------------------------------------------------------------------------------   // --------------------------------------------------------------------------------
   // -- Simple method to read out a histogram containing PID-numbers for particles (x-axis) and their   // -- Simple method to read out a histogram containing PID-numbers for particles (x-axis) and their
   // -- frequency (y-axis)   // -- frequency (y-axis)
-  // -- Needed inputs are: The tree containing the information, a name for the histogram +  // -- Needed inputs are: The tree containing the information and the name for the variable in the 
-  // -- and the name of the variable in the tree+  // -- tree. Optionally, the name of the output file can be given as the last argument.
   // --------------------------------------------------------------------------------   // --------------------------------------------------------------------------------
  
Line 30: Line 41:
   sprintf(out, "%s>>%s",variablename,"histo");   sprintf(out, "%s>>%s",variablename,"histo");
   tree->Draw(out, "","goff");   tree->Draw(out, "","goff");
-  //histo->Draw(); 
-  //fillPID(variablename, tree, histo, min); 
      
-  // -- Draw the histogram (is this needed?) 
-  //TCanvas *c = new TCanvas(); 
-  //histo->Draw(); 
  
   // -- Declare a multimap to automatically sort the PID-numbers according to their frequency in %   // -- Declare a multimap to automatically sort the PID-numbers according to their frequency in %
Line 50: Line 56:
   }   }
      
-  // -- Open a file "BG_cat.txt" to save the output+  // -- Open a file to save the output 
 +  // -- Note: The "ios::app" appends the output at the end of the existing file!
   fstream PIDfile(filename, ios::out | ios::app);   fstream PIDfile(filename, ios::out | ios::app);
      
Line 72: Line 79:
   PIDfile.close();   PIDfile.close();
   delete histo;   delete histo;
-  //delete c; 
      
 } }
 </code> </code>
 +
 +===== Notes =====
 +If the output-file already exists, the output will be appended. This is useful if you call the method several times for different particles and want to store everything in one file. If you don't like this behaviour, delete the ''| ios::app'' in the code.
root/storemcnumbers.1231334707.txt.gz · Last modified: 2009/01/07 14:25 by decianm