Re: [ROOT] TCuts as argument

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Fri Aug 17 2001 - 18:54:57 MEST


Hi Christian, 

On Fri, 17 Aug 2001 15:56:17 +0200 (CEST)
Christian Doerr <cdoerr@physi.uni-heidelberg.de> wrote
concerning "[ROOT] TCuts as argument":
> Hello roottalk,
> 
> I've taken a close look at the roottalk digest, but didn't really find a
> solution to my problem.
> Is there a way of passing a TCut expression as argument, for example
> something like:
> 
> void getSelection(TCut cut)
> {
> 	select events if "cut" is true
> }
 
You should use a const reference rather than a value 

  class gradStudAna : public TObject 
  {
  private: 
    TFile*      fFile;
    TTree*      fTree; 
    TEventList* fEvents; 
  public: 
    gradStudAna(const Char_t* fileName) { 
      fFile = new TFile(fileName, "READ"); 
      if (!fFile) { MakeZombie(); return; }
      fTree = (TTree*)fFile->Get("T"); 
      if (!fTree) { MakeZombie(); return; }
    }
    void getSelection(const TCut& cut) { 
     // Read the selection into a TEventList. See the Users guide. 
     ... 
    } 
    void plotSelection(); 
    ...
  };

> Certainly I could just use plain C++ syntax to get some selection, but my
> aim is  to create some  environment for undergraduates to enable them to
> do a simple physics analysis without any C++ knowledge, giving them some
> easy to use tools for things like fitting, plotting etc... So it would be
> nice if there was a way of passing cuts as an argument to a function so
> that the students can define their own cuts without having to implement
> root macros.

I guess something like 

  Root>  gradStudAna myAna("course1.root"); 
  Root>  TCut myCut("pt > 5 && pid == 411"); 
  Root>  myAna.getSelection(myCut); 
  Root>  myAna.plotSelection();  

is what you want.  Hope this helps. 

Yours, 

Christian Holm Christensen -------------------------------------------
Address: Sankt Hansgade 23, 1. th.           Phone:  (+45) 35 35 96 91 
         DK-2200 Copenhagen N                Cell:   (+45) 28 82 16 23
         Denmark                             Office: (+45) 353  25 305 
Email:   cholm@nbi.dk                        Web:    www.nbi.dk/~cholm



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:58 MET