// Last update by Thomas Eberl: 04/09/23 14:02:51
//
#ifndef HRICHSELECTOR_H
#define HRICHSELECTOR_H

#include "hreconstructor.h"
#include "TTree.h"
#include "TNtuple.h"
#include "TFile.h"
class HCategory;
class HIterator;
class HHitMatch;
class HDiHitMatch;
class HHitMatchSim;
class HDiHitMatchSim;
class HTrackInfo;
class HRichSelector : public HReconstructor {
public:

	HRichSelector();
        HRichSelector(const Text_t *name,const Text_t *title,const Char_t *swt,const Char_t *kevtType );
	~HRichSelector();

        Bool_t init();
        Bool_t finalize();
        Int_t execute();
    ClassDef(HRichSelector,1) 

private:
    // data members
    HCategory* pHitMatchCat;//!
    HIterator* pHitMatchIter;//!
    HCategory* pDiHitMatchCat;//!
    HIterator* pDiHitMatchIter;//!
    Int_t nEvtsProcessed;//!
    TString *pFileName; //!
    Bool_t evtType; //!
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    struct TrackE {
	Float_t recCorr;
	Float_t single;
	Float_t Double;
	Float_t pid;
	Float_t verx;
	Float_t very;
	Float_t verz;
	// reconstructed info
	Float_t goodCorr;
	Float_t goodRing;
	Float_t goodShower;
	Float_t goodBetaMom;
	Float_t recCharge;
	Float_t chi2fit;
	Float_t avgChrg;
	Float_t patmat;
	Float_t nrpads;
	Float_t ampl;
	Float_t centr;
	Float_t mom;
	Float_t tof;
	Float_t beta;
	Float_t sec;
	Float_t ktheta;
	Float_t kphi;
	Float_t rtheta;
	Float_t rphi;
	Float_t metatheta;
	Float_t metaphi;
	Float_t sys;
    };//!
    struct TrackS {
	Float_t truetrack;
	Float_t fake;
	Float_t recCorr;
	Float_t single;
	Float_t Double;
	Float_t nbpart;
	// maxcorrelated particle 
	Float_t pid1;
	Float_t corr1;
	Float_t orig1;
	Float_t cpid1;
	Float_t ctrk1;
	Float_t mech1;
	Float_t med1;
	Float_t gmom1;
	Float_t verx1;
	Float_t very1;
	Float_t verz1;
	// particle 2
	Float_t pid2;
	Float_t corr2;
	Float_t orig2;
	Float_t cpid2;
	Float_t ctrk2;
	Float_t mech2;
	Float_t med2;
	Float_t gmom2;
	Float_t verx2;
	Float_t very2;
	Float_t verz2;
	// reconstructed info
	Float_t goodCorr;
	Float_t goodRing;
	Float_t goodShower;
	Float_t goodBetaMom;
	Float_t recCharge;
	Float_t chi2fit;
	Float_t avgChrg;
	Float_t patmat;
	Float_t nrpads;
	Float_t ampl;
	Float_t centr;
	Float_t mom;
	Float_t tof;
	Float_t beta;
	Float_t sec;
	Float_t ktheta;
	Float_t kphi;
	Float_t metatheta;
	Float_t metaphi;
	Float_t sys;
    };//!
    
    struct PairE {
	Float_t mass;
	Float_t opang;
	Float_t nbDmdc;
	Float_t nbDrich;
	Float_t nbDmeta;
	Float_t goodPair;
	Float_t charge;
	Float_t betadiff;
	Float_t tofdiff;
	Float_t rap;
	Float_t pt;
    };//!
    
    struct PairS {
	Float_t mass;
	Float_t opang;
	Float_t nbDmdc;
	Float_t nbDrich;
	Float_t nbDmeta;
	Float_t goodPair;
	Float_t recCharge;
	Float_t betadiff;
	Float_t tofdiff;
	// sim
	Float_t orig;//0 conv/1 pidal/2 etadal
	Float_t truepair;//y/n
	Float_t fake;//code 0:trueCB, 1:fakeCB
	Float_t faketype;//0 e / 1 pion / 2 proton
	Float_t med;
	Float_t charge;
	Float_t rap;
	Float_t pt;
    };//!
    


    //
    TFile *pFileOut;//!
    TTree *outTreeTracksRings; //!
    TTree *outTreePairsTracksRings; //!
    TTree *outTreeTracks; //!
    TTree *outTreePairs; //!
    TTree *outTreePairsTracks; //!
    TNtuple* outNtupleS; //!
    TNtuple* outNtuplePairsS; //!
    TNtuple* outNtupleE; //!
    TNtuple* outNtuplePairsE; //!
    HHitMatch *track;//!
    HHitMatchSim *tracksim;//!
    HDiHitMatch *pair;//!
    HDiHitMatchSim *pairsim;//!
    // member functions
    void classifyTrackS(HHitMatchSim*,TrackS&);
    void resetTrackS(TrackS&);
    void resetPairS(PairS&);
    void classifyTrackE(HHitMatch*,TrackE&);
    void resetTrackE(TrackE&);
    void resetPairE(PairE&);
    Int_t getSingleParticleIndexFromTrackInfo(HTrackInfo*);
    Float_t getMaxRichWeight(HTrackInfo*);
    Float_t getMaxMdcWeight(HTrackInfo*);
    Bool_t isGoodPair(HDiHitMatch*);
    Bool_t isGoodPairWithGoodTracks(HDiHitMatch*);
    Bool_t isGoodTrack(HHitMatch*);
    Bool_t isGoodRing(HHitMatch*);
    Bool_t isBetaMom3s(HHitMatch*);
    Bool_t isGoodShower(HHitMatch*);
    Bool_t isGoodCorrelation(HHitMatch*);
    Bool_t isSingleTrack(HHitMatchSim*);
    UInt_t getDownscalingFlag();
    UInt_t getDownscaling();
    UInt_t getTriggerDecision();
    UInt_t getSeqNumber();                        
    Int_t getRecCorrCode(HHitMatch*);
    HHitMatch* get1stTrackE(HDiHitMatch*);
    HHitMatch* get2ndTrackE(HDiHitMatch*);
    HHitMatchSim* get1stTrackS(HDiHitMatchSim*);
    HHitMatchSim* get2ndTrackS(HDiHitMatchSim*);
    Bool_t fillTrackNtupleS();
    Bool_t fillNtupleS(HHitMatchSim*);
    Bool_t fillTrackNtupleE();
    Bool_t fillNtupleE(HHitMatch*);
    Bool_t fillPairNtupleS();
    Bool_t fillNtuplePairS(HDiHitMatchSim*);
    Bool_t fillPairNtupleE();
    Bool_t fillNtuplePairE(HDiHitMatch*);
    Bool_t selectTracksE();
    Bool_t selectTracksS();
    Bool_t selectPairsE();
    Bool_t selectPairsS();
    Bool_t selectRingsInTracksE();
    Bool_t selectRingsInTracksS();
    Bool_t selectRingsInTracksInPairsE();
    Bool_t selectRingsInTracksInPairsS();
    Bool_t selectTracksInPairsE();
    Bool_t selectTracksInPairsS();
};

#endif // HRICHSELECTOR_H

Last change: Sat May 22 13:10:02 2010
Last generated: 2010-05-22 13:10

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.