// -*- mode: c++ -*- #ifndef BRAT_BrFfsTrackingModule #define BRAT_BrFfsTrackingModule // // $Id: BrFfsTrackingModule.h,v 1.4 2002/03/24 20:38:26 videbaek Exp $ #ifndef ROOT_TObject #include "TObject.h" #endif #ifndef ROOT_TClonesArray #include "TClonesArray.h" #endif #ifndef ROOT_TH1 #include "TH1.h" #endif #ifndef ROOT_TH2 #include "TH2.h" #endif #ifndef ROOT_TNtuple #include "TNtuple.h" #endif #ifndef BRAT_BrModule #include "BrModule.h" #endif #ifndef BRAT_BrDetectorVolume #include "BrDetectorVolume.h" #endif #ifndef BRAT_BrDetectorParamsTof #include "BrDetectorParamsTof.h" #endif #ifndef BRAT_BrModuleMatchTrack #include "BrModuleMatchTrack.h" #endif #ifndef BRAT_BrEventNode #include "BrEventNode.h" #endif #ifndef BRAT_BrDataTable #include "BrDataTable.h" #endif #ifndef BRAT_BrBbVertex #include "BrBbVertex.h" #endif class BrFfsTrackingModule : public BrModule { public: BrFfsTrackingModule(); BrFfsTrackingModule(const Char_t*, const Char_t*); ~BrFfsTrackingModule(); BrModuleMatchTrack* GetCombineModule() { return fCombineModule;}; virtual void Init(); virtual void Begin(); virtual void DefineHistograms(); virtual void Event(BrEventNode*, BrEventNode*); virtual void Finish(); BrMagnetVolume* GetD1Volume() const { return fD1Volume; } void SetNtuple(Bool_t n = kFALSE) { fNtuple = n; } void SetUseDb(Bool_t usedDb=kTRUE) {fUseDb=usedDb;} private: void SetMagnetFields(); void TrackToVertex(BrDataTable*, BrBbVertex*); BrLine3D FrontTrackIncidence(BrDetectorTrack* track, Double_t P); BrLine3D BackTrackIncidence(BrDetectorTrack* track); BrVector3D BackTrackToT1(BrDetectorTrack* track, Double_t P); BrModuleMatchTrack* fCombineModule; // Module combining front/back track. BrDetectorVolume* fFrontVolume; // Pointer to front volume BrDetectorVolume* fBackVolume; // Pointer to back detector volume BrDetectorVolume* fH1Volume; // Pointer to H1 detector volume BrDetectorParamsTof* fH1Params; // Pointer to H1 parameters BrMagnetVolume* fMagnetVolume; // Pointer to magnet D2volume BrMagnetVolume* fD1Volume; // Pointer to magnet D1 volume TClonesArray* fTracksFrontBack; // Container of matched tracks Bool_t fUseDb; // Indicator for picking Magnetfield from Db // histograms TH1F* fSwimStatus;// swim back status through D1 TH1F* fPathLength; // track length (cm) TH1F* fPartialLength; // track length from D1 to H1 (cm) TH1F* fTargetX; // track projection X on plane Z = 0 TH1F* fTargetY; // track projection Y on plane Z = 0 TH2F* fFIncAng; // angle of incidence of front track on H1 (degree) TH2F* fBIncAng; // angle of incidence of back track on H1 (degree) TH2F* fAngCorr; // correlation between both angles TH2F* fH1CorrX; // correlation between back and front tracks X on H1 TH2F* fH1CorrY; // correlation between back and front tracks Y on H1 TH1F* fH1ProjX; // same but difference TH1F* fH1ProjY; // same but difference TH1F* fH1Slat; // pointed slat on H1 TH2F* fT1CorrX; // correlation between back and front tracks X in T1 TH2F* fT1CorrY; // correlation between back and front tracks Y on H1 TH1F* fT1DiffX; // same but difference TH1F* fT1DiffY; // same but difference TH1F* fMomentum; // track momentum TH2F* fTrkXY; // track projection on BB vertex plane TH1F* fTrkX; // track projection X on BB vertex plane TH1F* fTrkY; // same in Y TH2F* fCloseXY; // track closest Y vs X to beam line TH1F* fCloseX; // track closest X to beam line TH1F* fCloseY; // track closest Y to beam line TH1F* fCloseZ; // track closest Z to beam line TH2F* fCloseCorr; // correlation between bb vtx and track closest Z TH1F* fCloseDiff; // same but difference TH1F* fNTracksAll;// all tracks, whatever status TH1F* fNTracks; // number of tracks, status = 1 (after ghostbusting) TH1F* fStatus; // ghostbusting status TH1F* fTheta; TH1F* fPhi; TNtuple* fTrackInfo; // correlation between all variables Bool_t fNtuple; // switch on/off ntuple public: ClassDef(BrFfsTrackingModule, 0) // BRAHMS FFS Tracking Module Interface }; #endif //___________________________________________________________________________________ // // $Log: BrFfsTrackingModule.h,v $ // Revision 1.4 2002/03/24 20:38:26 videbaek // Add finish entry // // Revision 1.3 2001/12/13 12:43:26 ouerdane // fixed a bug in the unit of theta and phi, added corresponding histos // // Revision 1.2 2001/12/07 21:36:59 videbaek // Add UseDb method to bypass RunDb. For particular Geant use. // Bypass (in FFS) swimstatus if momentum undetermined, but D1 is on. This happens for // some zero filed runs. SwinStatus would give an error message per track if not bypassed. // complete analysis in ffs even if no Vtx from BB. Set vz to 0 in Ntuples, etc. // Needed and useful for Geant + pp running when this comes up. // // Revision 1.1 2001/11/05 06:44:47 ouerdane // added new classes replacing older spectrometer track modules //