// -*- mode: c++ -*- // // $Id: BrVertexFilter.h,v 1.5 2002/08/30 17:02:02 hagel Exp $ // $Author: hagel $ // $Date: 2002/08/30 17:02:02 $ // $Copyright: 2000 BRAHMS Collaboration // #ifndef BRAT_BrVertexFilter #define BRAT_BrVertexFilter #ifndef BRAT_BrModule #include "BrModule.h" #endif #ifndef BRAT_BrEventNode #include "BrEventNode.h" #endif #ifndef ROOT_TH1 #include #endif class BrVertexFilter : public BrModule { protected: Float_t fMaxZdcVertexZ; Float_t fMaxBbVertexZ; Float_t fMaxTpm1VertexZ; Float_t fMaxInelVertexZ; Float_t fMaxProjectionVertexZ; Float_t fCurrentZdcVertexZ; Float_t fCurrentBbVertexZ; Float_t fCurrentTpm1VertexZ; Float_t fCurrentInelVertexZ; Float_t fCurrentProjectionVertexZ; Int_t fNoTimesCalled; // No of times the Event point was called Int_t fNoAcceptedZDC; // No of times ZDC cut was passed. Int_t fNoAcceptedBB; // No of times BB cut was passed. Int_t fNoAcceptedTPM1; // No of times TPM1 cut was passed. Int_t fNoAcceptedInel; // No of times Inel cut was passed. Int_t fNoAcceptedProjection; // No of times Projection cut was passed. TH1F* fAllZdcHisto; TH1F* fAccZdcHisto; TH1F* fAllBbHisto; TH1F* fAccBbHisto; TH1F* fAllTpm1Histo; TH1F* fAccTpm1Histo; TH1F* fAllInelHisto; TH1F* fAccInelHisto; TH1F* fAllProjectionHisto; TH1F* fAccProjectionHisto; Bool_t kDemandZdcVertex; // Absolutely require a Zdc data object Bool_t kDemandBbVertex; // Absolutely require a Bb data object Bool_t kDemandTpcVertex; // Absolutely require a Tpc data object Bool_t kDemandInelVertex; // Absolutely require an Inel data object Bool_t kDemandProjectionVertex; // Absolutely require a Projection data object virtual Bool_t CheckZdcVertex(BrEventNode* node); virtual Bool_t CheckBbVertex(BrEventNode* node); virtual Bool_t CheckTpm1Vertex(BrEventNode* node); virtual Bool_t CheckInelVertex(BrEventNode* node); virtual Bool_t CheckProjectionVertex(BrEventNode* node); public: BrVertexFilter(); BrVertexFilter(const Char_t* name, const Char_t* title); virtual void SetMaxZdcVertexZ(Float_t z=45); virtual void SetMaxBbVertexZ(Float_t z=30); virtual void SetMaxTpm1VertexZ(Float_t z=0); virtual void SetMaxInelVertexZ(Float_t z=0); virtual void SetMaxProjectionVertexZ(Float_t z=0); virtual void DefineHistograms(); virtual void Event(BrEventNode* input, BrEventNode*); virtual void Finish(); virtual void Print(Option_t* option="B") const; virtual void DemandZdcVertex(Bool_t k=kTRUE) {kDemandZdcVertex=k;} virtual void DemandBbVertex(Bool_t k=kTRUE) {kDemandBbVertex=k;} virtual void DemandTpcVertex(Bool_t k=kTRUE) {kDemandTpcVertex=k;} virtual void DemandInelVertex(Bool_t k=kTRUE) {kDemandInelVertex=k;} virtual void DemandProjectionVertex(Bool_t k=kTRUE) {kDemandProjectionVertex=k;} ClassDef(BrVertexFilter,0) // A vertex filter } ; #endif // // $Log: BrVertexFilter.h,v $ // Revision 1.5 2002/08/30 17:02:02 hagel // Added support for track projection vertices // // Revision 1.4 2002/08/06 19:08:37 hagel // Add support for Inel vertex filtering // // Revision 1.3 2001/12/17 10:48:48 bjornhs // Changed the order of BB vertex checking - first BrBbVertex, then BbRdo // Added functionality for demanding the presence of a specific vertex // object, set to kFALSE by default. Syntax: // myVertexFilter->Demand[Bb/Zdc/Tpc]Vertex(); // // Revision 1.2 2001/11/02 15:19:23 cholm // Changed the BrCollisionFilter to derive from BrVertexFilter (updates // to both classes), since the collision filter is basically a vertex. // // Revision 1.1.1.1 2001/06/21 14:55:14 hagel // Initial revision of brat2 // // Revision 1.3 2001/06/16 17:27:05 videbaek // Add statistcis to filter // // Revision 1.2 2001/03/07 12:13:15 cholm // Changed Info to Print. // // Revision 1.1 2001/01/29 19:57:49 cholm // Added the class BrVertexFilter for selecting events with a limited vertex // range in Z. // // Revision 1.1 2001/01/19 16:33:37 cholm // Added the class BrVertexFilter, which is a filter to select events with // only a specific set of events, as defined by user. This is a module, so it // can go in the regular module pipeline, probably just after the input module. // //