#ifndef HMDCTRACKINGEFF_H
#define HMDCTRACKINGEFF_H
#include "hreconstructor.h"
#include "hlocation.h"
#include "TRandom.h"
#include "TIterator.h"
class TNtuple;
class TFile;
class HMatrixCategory;
class HLinearCategory;
class HMdcSegSim;
class HMdcTrkCand;
class HGeantKine;
class TLorentzVector;
class HMdcTrackingEff : public HReconstructor {
protected:
TString fNameRoot;
TFile* out;
TNtuple* single;
TNtuple* pairs;
TIterator* iterTrkCand;
TIterator* iterTrkCandIdeal;
TIterator* iterGeantTof;
TIterator* iterGeantShower;
HMatrixCategory* catmHMdcTrkCand;
HMatrixCategory* catmHMdcTrkCandIdeal;
HMatrixCategory* catmHMdcSegSim;
HMatrixCategory* catmHMdcSegIdeal;
HMatrixCategory* catmHGeantTof;
HMatrixCategory* catmHGeantShower;
HLinearCategory* catlHGeantKine;
Int_t indSegId[2];
HMdcSegSim* pSegId[2];
Int_t indSeg[2];
HMdcSegSim* pSeg[2];
Int_t trkNrId;
static const Int_t nEvnt =1 ;
static const Int_t nKine =10;
static const Int_t nSeg =24;
static const Int_t nChi2 =2;
static const Int_t npair =25;
static const Int_t nsingle=2;
static const Int_t maxTrks=600;
static const Int_t nSingle=40;
static const Int_t nPairs =98;
static const Int_t sizeInd=10;
Int_t indexTable[maxTrks*sizeInd];
Float_t dSingle[nSingle];
Float_t dPairs [nPairs];
Int_t offsetSeg1Kine;
Int_t offsetSeg2Kine;
Int_t offsetSeg1 ;
Int_t offsetSeg2 ;
Int_t offsetChi2 ;
Int_t offsetPair ;
Int_t offsetSingle ;
void initVariables();
void resetDataArray()
{
for (Int_t i=0;i<nSingle;i++)dSingle[i]=-999;
for (Int_t i=0;i<nPairs;i++) dPairs [i]=-999;
}
void getSegPointers(Int_t*,HMdcSegSim**,HMdcTrkCand*,HMatrixCategory*,Int_t mode=0);
HGeantKine* getKineInfo(Int_t,Int_t&,Int_t&,Float_t&,Float_t&,Float_t&,HLinearCategory*);
Bool_t sameTrkSegments(Int_t,HMdcSegSim**,Int_t mode=0);
HMdcTrkCand* findSameRealCand(Int_t,Int_t*,HMdcSegSim**,TIterator*,HMatrixCategory*,HMatrixCategory*,HLinearCategory*);
TString getProcessString(Float_t);
Bool_t sameDecay(Int_t,Int_t,Float_t,Float_t,Float_t,Float_t);
void resetIndexTable(Int_t*,Int_t);
Bool_t fillIndexTable(Int_t*,Int_t&,Int_t,Int_t*,Int_t*,HLinearCategory*);
void printIndexTable(Int_t*,Int_t);
Int_t findPartner(Int_t*,Int_t,Int_t);
Bool_t hasPartner(Int_t*,Int_t,Int_t);
void fillSegData(Int_t,Int_t*,Float_t*,Int_t,HMatrixCategory*,HMatrixCategory*);
void fillKineData(Int_t&,Int_t,Int_t*,Float_t*,Int_t,HMatrixCategory*,HLinearCategory*);
Int_t findGeantMeta(Int_t,Int_t,TIterator*,HMatrixCategory*,TIterator*,HMatrixCategory*);
void fillNTuple(Int_t,Int_t*,Int_t,HMatrixCategory*,HMatrixCategory*,HLinearCategory*,TIterator*,HMatrixCategory*,TIterator*,HMatrixCategory*,TNtuple*,TNtuple*);
Float_t getLabPhiDeg(Int_t sector, Float_t phi);
Float_t getThetaPairDeg(TLorentzVector& v);
Float_t getPhiPairDeg(TLorentzVector& v);
void kineToSegPhiThetaDeg(HGeantKine* kine,Float_t& theta,Float_t& phi);
Float_t pairPhiToLabDeg(Float_t phi);
Float_t pairThetaToLabDeg(Float_t theta);
void fillVectorFromSeg(TLorentzVector& v, Int_t slot,Int_t type);
void fillVectorFromKine(TLorentzVector& v, Int_t slot);
public:
HMdcTrackingEff(void);
HMdcTrackingEff(const Text_t* name,const Text_t* title);
~HMdcTrackingEff(void);
void setOutputRoot (TString="ntuple_tracking_eff.root");
Bool_t init(void);
Bool_t finalize();
Int_t execute();
ClassDef(HMdcTrackingEff,0)
};
#endif /* !HMDCTRACKINGEFF_H */
Last change: Sat May 22 13:04:11 2010
Last generated: 2010-05-22 13:04
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.