ROOT logo
#ifndef ALICFEVENTGENCUTS_H
#define ALICFEVENTGENCUTS_H
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
// Cut on the Event at generator level: for the moment just
// the requirements on the MB process type, on the number of charged tracks 
// and on the vertex 3-D position are implemented
// The argument of IsSelected member function (passed object) is cast into 
// an AliMCEvent. In the future may be modified to use AliVEvent interface
// and to include more cut variables.
// The class derives from AliCFCutBase
// Author:S.Arcelli Silvia.Arcelli@cern.ch


#include "AliCFCutBase.h"
class TBits;
class AliGenEventHeader;
class AliMCEvent;
//____________________________________________________________________________
class AliCFEventGenCuts: public AliCFCutBase 
{
 public :
  AliCFEventGenCuts() ;
  AliCFEventGenCuts(Char_t* name, Char_t* title) ;
  AliCFEventGenCuts(const AliCFEventGenCuts& c) ;
  AliCFEventGenCuts& operator=(const AliCFEventGenCuts& c) ;
  ~AliCFEventGenCuts();
  Bool_t IsSelected(TObject* obj);
  Bool_t IsSelected(TList* /*list*/) {return kTRUE;}

  //number of embedded cuts
  enum{kNCuts=5};

  //Label the MB MC processes
  enum PrType { 
   kND, kSD, kDD 
  }; 


  static Int_t ProcType(AliGenEventHeader *genHeader); 
  static Bool_t IsMBProcType(AliMCEvent *ev, PrType iproc);


  void   SetMBSelProcType(PrType iproc = kND) {fMBProcType=iproc;} // cut values setter
  Int_t  GetMBSelProcType()const {return fMBProcType;} // cut values getter



  void SetNTracksCut(Int_t xMin=-1, Int_t xMax=1000000) {fNTracksMin=xMin; fNTracksMax=xMax;} // cut values setter

  void SetRequireVtxCuts(Bool_t vtx=kFALSE) {fRequireVtxCuts=vtx;} // cut values setter
  void SetVertexXCut(Double_t xMin=-1.e99, Double_t xMax=1.e99) { fVtxXMin=xMin; fVtxXMax=xMax;} // cut values setter
  void SetVertexYCut(Double_t yMin=-1.e99, Double_t yMax=1.e99) { fVtxYMin=yMin; fVtxYMax=yMax;} // cut values setter
  void SetVertexZCut(Double_t zMin=-1.e99, Double_t zMax=1.e99) { fVtxZMin=zMin; fVtxZMax=zMax;} // cut values setter

  Int_t    GetNTracksMin() const {return fNTracksMin;} // cut values getter
  Int_t    GetNTracksMax() const {return fNTracksMax;} // cut values getter
  Bool_t   GetRequireVtxCuts() const {return fRequireVtxCuts;} // cut value getter
  Double_t GetVertexXMax() const {return fVtxXMax;} // cut values getter
  Double_t GetVertexYMax() const {return fVtxYMax;} // cut values getter
  Double_t GetVertexZMax() const {return fVtxZMax;} // cut values getter
  Double_t GetVertexXMin() const {return fVtxXMin;} // cut values getter
  Double_t GetVertexYMin() const {return fVtxYMin;} // cut values getter
  Double_t GetVertexZMin() const {return fVtxZMin;} // cut values getter
  

 protected:

  void SelectionBitMap(TObject* obj);
  
  Int_t fMBProcType ; //the type of selected MB process 
  Int_t fNTracksMin; //minimum number of particles in the event
  Int_t fNTracksMax; //maximum number of particles in the event
  Bool_t fRequireVtxCuts ; //The type of trigger to be checked
  Double_t fVtxXMax ; //X vertex position, maximum value
  Double_t fVtxYMax ; //Y vertex position, maximum value 
  Double_t fVtxZMax ; //Z vertex position, maximum value
  Double_t fVtxXMin ; //X vertex position, minimum value
  Double_t fVtxYMin ; //Y vertex position, minimum value
  Double_t fVtxZMin ; //Z vertex position, minimum value

  TBits *fBitMap ; //cut mask

  ClassDef(AliCFEventGenCuts,2);
};

#endif
 AliCFEventGenCuts.h:1
 AliCFEventGenCuts.h:2
 AliCFEventGenCuts.h:3
 AliCFEventGenCuts.h:4
 AliCFEventGenCuts.h:5
 AliCFEventGenCuts.h:6
 AliCFEventGenCuts.h:7
 AliCFEventGenCuts.h:8
 AliCFEventGenCuts.h:9
 AliCFEventGenCuts.h:10
 AliCFEventGenCuts.h:11
 AliCFEventGenCuts.h:12
 AliCFEventGenCuts.h:13
 AliCFEventGenCuts.h:14
 AliCFEventGenCuts.h:15
 AliCFEventGenCuts.h:16
 AliCFEventGenCuts.h:17
 AliCFEventGenCuts.h:18
 AliCFEventGenCuts.h:19
 AliCFEventGenCuts.h:20
 AliCFEventGenCuts.h:21
 AliCFEventGenCuts.h:22
 AliCFEventGenCuts.h:23
 AliCFEventGenCuts.h:24
 AliCFEventGenCuts.h:25
 AliCFEventGenCuts.h:26
 AliCFEventGenCuts.h:27
 AliCFEventGenCuts.h:28
 AliCFEventGenCuts.h:29
 AliCFEventGenCuts.h:30
 AliCFEventGenCuts.h:31
 AliCFEventGenCuts.h:32
 AliCFEventGenCuts.h:33
 AliCFEventGenCuts.h:34
 AliCFEventGenCuts.h:35
 AliCFEventGenCuts.h:36
 AliCFEventGenCuts.h:37
 AliCFEventGenCuts.h:38
 AliCFEventGenCuts.h:39
 AliCFEventGenCuts.h:40
 AliCFEventGenCuts.h:41
 AliCFEventGenCuts.h:42
 AliCFEventGenCuts.h:43
 AliCFEventGenCuts.h:44
 AliCFEventGenCuts.h:45
 AliCFEventGenCuts.h:46
 AliCFEventGenCuts.h:47
 AliCFEventGenCuts.h:48
 AliCFEventGenCuts.h:49
 AliCFEventGenCuts.h:50
 AliCFEventGenCuts.h:51
 AliCFEventGenCuts.h:52
 AliCFEventGenCuts.h:53
 AliCFEventGenCuts.h:54
 AliCFEventGenCuts.h:55
 AliCFEventGenCuts.h:56
 AliCFEventGenCuts.h:57
 AliCFEventGenCuts.h:58
 AliCFEventGenCuts.h:59
 AliCFEventGenCuts.h:60
 AliCFEventGenCuts.h:61
 AliCFEventGenCuts.h:62
 AliCFEventGenCuts.h:63
 AliCFEventGenCuts.h:64
 AliCFEventGenCuts.h:65
 AliCFEventGenCuts.h:66
 AliCFEventGenCuts.h:67
 AliCFEventGenCuts.h:68
 AliCFEventGenCuts.h:69
 AliCFEventGenCuts.h:70
 AliCFEventGenCuts.h:71
 AliCFEventGenCuts.h:72
 AliCFEventGenCuts.h:73
 AliCFEventGenCuts.h:74
 AliCFEventGenCuts.h:75
 AliCFEventGenCuts.h:76
 AliCFEventGenCuts.h:77
 AliCFEventGenCuts.h:78
 AliCFEventGenCuts.h:79
 AliCFEventGenCuts.h:80
 AliCFEventGenCuts.h:81
 AliCFEventGenCuts.h:82
 AliCFEventGenCuts.h:83
 AliCFEventGenCuts.h:84
 AliCFEventGenCuts.h:85
 AliCFEventGenCuts.h:86
 AliCFEventGenCuts.h:87
 AliCFEventGenCuts.h:88
 AliCFEventGenCuts.h:89
 AliCFEventGenCuts.h:90
 AliCFEventGenCuts.h:91
 AliCFEventGenCuts.h:92
 AliCFEventGenCuts.h:93
 AliCFEventGenCuts.h:94
 AliCFEventGenCuts.h:95
 AliCFEventGenCuts.h:96
 AliCFEventGenCuts.h:97
 AliCFEventGenCuts.h:98
 AliCFEventGenCuts.h:99