[ROOT] Re: cuts on histograms

From: filjaybee@physics.msuiit.edu.ph
Date: Sun May 26 2002 - 13:43:22 MEST


hi everyone...

SORRY... i was out for some time :-).  by the way,  i am using
root version 3.02/06 and my operating system is redhat linux
7.1... the problem is this: i have a tree file containing data
and i want to put some cuts on the data.  i have 31 cuts and root
allows only less than 10... and i want these cuts to be applied
simulatneously... the SHORTENED code is found below:

==============================================================
==============================================================
==============================================================
//////////////////////////////////////////////////
// Reading and Making Histograms of TTree Files //
//////////////////////////////////////////////////
Char_t *inputfile = "i02zh6janl.root";
Char_t *outputfile= "zh6janlcuthist02.root";

TCanvas *dHist;

Double_t kmin = 0.0;
Double_t kmax = 300.0;
Int_t kbin = 150;

//-------------------------------
void InitHist()
{
  hfPt = new TH1F("hfPt","Transverse Momentum",kbin,kmin,kmax);
  hfPt->SetXTitle("hfPt");
  
  hfEvis = new TH1F("hfEvis","Visible Energy",kbin,kmin,kmax);
  hfEvis->SetXTitle("hfEvis");
  
  // I HAVE 33 HISTOGRAMS HERE AND ALL OF THEM ARE IN THE
INPUT     // FILE...

  hfNjets = new TH1F("hfNjets","Number of Jets",100,0,100);
  hfNjets->SetXTitle("hfNjets");
  
  hfEjet = new TH1F("hfEjet","Energy of Jets",kbin,kmin,kmax);
  hfEjet->SetXTitle("hfEjet");
}

//-------------------------------------------------------//
void READTTreeFile02()  //FILENAME: READTTreeFile02.C
{
 TFile *f1, *f2;

 f1 = new TFile(inputfile,"READ");
 TTree *T0 = (TTree*)f1.Get("analysis"); // "analysis" tree name  
 f2 = new TFile(outputfile, "RECREATE");

 // BELOW ARE THE CUTS... 31 OF THEM...
 TCut cut0 = "fEvis>=240 && fPt<=20 && fPl>=-25 && fPl<=25";
 // cut0 is a combination of 4 cuts/conditions
 TCut cut1 = "fThrust>=0.650 && fThrust<=0.825 &&
fFYmax>=0.0025";
 TCut cut2 = "fNjets>=80 && fEjet>=10 && fEjet<=120 &&
fNchg>=30";
 TCut cut3 = "fMassZ>=40 && fMassZ<=150 && fEnergyZ>=75 &&
fEnergyZ<=200 && fPabsZ>=40 && fPabsZ<=110";
 TCut cut4 = "fMassW>=30 && fMassW<=120 && fEnergyW>=40 &&
fEnergyW<=140 && fPabsW>=20 && fPabsW<=100";
 TCut cut5 = "fMassWstar>=20 && fMassWstar<=110 &&
fEnergyWstar>=30";
 TCut cut6 = "fEnergyWstar<=130 && fPabsWstar>=15 &&
fPabsWstar<=100";
 TCut cut7 = "fXsquareMass<=15 && fXsquareEner<=5 &&
fXsquarePabs<=10";


 dHist = new TCanvas("dHist","Canvas2",100,100,1000,1000);
 dHist->Divide(6,6);


 InitHist();


 // CUTS ARE APPLIED HERE...
 dHist->cd(1);  T0.Draw("fPt>>hfPt", cut0, cut1, cut2, cut3,
cut4, cut5, cut6, cut7);
 dHist->cd(2);  T0.Draw("fPl>>hfPl", cut0, cut1, cut2, cut3,
cut4, cut5, cut6, cut7);
 dHist->cd(3);  T0.Draw("fEvis>>hfEvis", cut0, cut1, cut2, cut3,
cut4, cut5, cut6, cut7);
 dHist->cd(4);  T0.Draw("fNchg>>hfNchg", cut0, cut1, cut2, cut3,
cut4, cut5, cut6, cut7);
 dHist->cd(5);  T0.Draw("fThrust>>hfThrust", cut0, cut1, cut2,
cut3, cut4, cut5, cut6, cut7);
 dHist->cd(6);  T0.Draw("fFYcut>>hfFYcut", cut0, cut1, cut2,
cut3, cut4, cut5, cut6, cut7);
 // THE REST OF THE HISTOGRAMS FOLLOW...

 f2.Write();
}
==============================================================
==============================================================
==============================================================


AND THE ERROR...
==============================================================
==============================================================
==============================================================
*******************************************
*                                         *
*        W E L C O M E  to  R O O T       *
*                                         *
*   Version   3.02/06      9 March 2002   *
*                                         *
*  You are welcome to visit our Web site  *
*          http://root.cern.ch            *
*                                         *
*******************************************

Compiled for linux with thread support.

CINT/ROOT C/C++ Interpreter version 5.15.21, Dec 8 2001
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0]
Processing READTTreeFile01.C...
Error: Can't call
TTree::Draw("fPt>>hfPt",cut0,cut1,cut2,cut3,cut4,cut5,cut6,cut7)
in current scope FILE:READTTreeFile01.C LINE:146
Possible candidates are...
filename       line:size busy function type and name  (in TTree)
(compiled)        0:0 0 public: virtual void Draw(Option_t* opt);
(compiled)        0:0 0 public: virtual Int_t Draw(const char*
varexp,TCut selection,Option_t* option=,Int_t
nentries=1000000000,Int_t firstentry=0);
(compiled)        0:0 0 public: virtual Int_t Draw(const char*
varexp,const char* selection,Option_t* option=,Int_t
nentries=1000000000,Int_t firstentry=0); //*MENU*
filename       line:size busy function type and name  (in TNamed)
filename       line:size busy function type and name  (in
TObject)
(compiled)        0:0 0 public: virtual void Draw(Option_t*
option=);
filename       line:size busy function type and name  (in
TAttLine)
filename       line:size busy function type and name  (in
TAttFill)
filename       line:size busy function type and name  (in
TAttMarker)
*** Interpreter error recovered ***
root [1]
==============================================================
==============================================================
==============================================================

if i put only "cut0 && cut5" or "cut3" it works but not when i
put "cut0, cut1, cut2, cut3, cut4, cut5, cut6, cut7".


please help me...
jaybee b. magallanes
csm, msuiit


_______________________________________________________________________
Committed to Excellence in Science and Technology http://www.msuiit.edu.ph/
Are you an MSUan? Join the MSU International Alumni Homecoming 2002 
Logon http://www.msu-system.org/ for details.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:53 MET