More information on this package is here.
#ifndef __TPartSieve__
#define __TPartSieve__
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <unistd.h>
#include "TROOT.h"
#include "TSystem.h"
#include "TObject.h"
#include "TString.h"
#include "TChain.h"
#include "TTree.h"
#include "TClonesArray.h"
#include "TVector2.h"
#include "TVector3.h"
#include "TRotation.h"
#include "TLorentzVector.h"
#include "TLorentzRotation.h"
#include "TMath.h"
#include "TH1F.h"
#include "TH2F.h"
#ifdef __USE_MYSQL__
#include "TSQLServer.h"
#include "TSQLRow.h"
#include "TSQLResult.h"
#endif
#include "THEADERClass.h"
#include "TEVNTClass.h"
#include "TECPBClass.h"
#include "TSCPBClass.h"
#include "TDCPBClass.h"
#include "TCCPBClass.h"
#include "TLCPBClass.h"
#include "THEADClass.h"
#ifdef WRITE_GSIM
#include "TGSIMClass.h"
#endif
#include "THLSClass.h"
#include "TS1STClass.h"
#include "TTRGSClass.h"
#include "TVirtualReader.h"
#include "TClasTool.h"
#include <vector>
#include <algorithm>
#define MAXPARTS 10
class TPartSieve : public TObject{
public:
Float_t fEC_U_Cut;
Float_t fEC_V_Cut;
Float_t fEC_W_Cut;
Float_t fEC_U_Cut_width;
Float_t fEC_V_Cut_width;
Float_t fEC_W_Cut_width;
Float_t fEC_Eio_slope;
Float_t fEC_Eio_off;
Float_t fEC_Ein_cut;
Float_t fEC_Eout_cut;
Float_t fCC_Phe_cut;
Float_t fCC_Phe_width;
Float_t fConf_Pim_DT_min;
Float_t fConf_Pim_DT_max;
Float_t fConf_Pip_DT_min;
Float_t fConf_Pip_DT_max;
Float_t fConf_Km_DT_min;
Float_t fConf_Km_DT_max;
Float_t fConf_Kp_DT_min;
Float_t fConf_Kp_DT_max;
Float_t fConf_Prot_DT_min;
Float_t fConf_Prot_DT_max;
Float_t fConf_Deut_DT_min;
Float_t fConf_Deut_DT_max;
Float_t fConf_He3_DT_min;
Float_t fConf_He3_DT_max;
Float_t fConf_He4_DT_min;
Float_t fConf_He4_DT_max;
Float_t fConf_Neut_DT_min;
Float_t fConf_Neut_DT_max;
Float_t fConf_El_DC_chi2;
Float_t fConf_Prot_DC_chi2;
Float_t fConf_Pim_DC_chi2;
Float_t fConf_Pip_DC_chi2;
Float_t fConf_Km_DC_chi2;
Float_t fConf_Kp_DC_chi2;
Float_t fConf_Deut_DC_chi2;
Float_t fConf_He3_DC_chi2;
Float_t fConf_He4_DC_chi2;
Float_t fConf_El_DC_chi2_width;
Float_t fConf_Prot_DC_chi2_width;
Float_t fConf_Pim_DC_chi2_width;
Float_t fConf_Pip_DC_chi2_width;
Float_t fConf_Km_DC_chi2_width;
Float_t fConf_Kp_DC_chi2_width;
Float_t fConf_Deut_DC_chi2_width;
Float_t fConf_He3_DC_chi2_width;
Float_t fConf_He4_DC_chi2_width;
vector<int> fvBadPaddles;
public:
TClasTool *fCT;
UShort_t fSortFlag;
Int_t fDebug_Mode;
Int_t fIndexSave;
Float_t fRefConfidenceCut;
Float_t fConfidenceCut;
Int_t fNPart[kNParticleTypes];
Int_t fIndex[kNParticleTypes][MAXPARTS];
Float_t fConfidence[kNParticleTypes][MAXPARTS];
void IndexPart(Int_t Ind,Float_t confidence=1);
public:
TPartSieve();
TPartSieve(TClasTool *clastool,Int_t runnum=0);
virtual ~TPartSieve();
void SortOn();
void ConfidenceOn();
void RefineIdOn();
void SortOff();
void ConfidenceOff();
void RefineIdOff();
void SetDebugMode(Int_t Mode);
void SetConfidenceCut(Float_t conf);
void SetRefConfidenceCut(Float_t conf);
Float_t GetPartConf(Int_t Ind);
void RefinePartId(Int_t Ind);
Int_t SieveEvent();
inline Int_t GetNIdx(Int_t idx){return fNPart[idx];};
Int_t GetNPid(Int_t pid);
Int_t GetIndexIdx(Int_t idx, Int_t num);
Int_t GetIndexPid(Int_t pid, Int_t num);
TEVNTClass* GetEVNTIdx(Int_t idx, Int_t num);
TEVNTClass* GetEVNTPid(Int_t pid, Int_t num);
Float_t GetConfFast(Int_t pid, Int_t num);
void IndexConf(Float_t conf,Int_t pid,Int_t num);
void Print();
virtual Float_t ConfUnknown(Int_t Ind);
virtual Float_t ConfPip(Int_t Ind);
virtual Float_t ConfProt(Int_t Ind);
virtual Float_t ConfEl(Int_t Ind,Float_t W=0.);
virtual Float_t ConfPhot(Int_t Ind);
virtual Float_t ConfPim(Int_t Ind);
virtual Float_t ConfNeut(Int_t Ind);
virtual Float_t ConfKp(Int_t Ind);
virtual Float_t ConfDeut(Int_t Ind);
virtual Float_t ConfKm(Int_t Ind);
virtual Float_t ConfHe4(Int_t Ind);
virtual Float_t ConfHe3(Int_t Ind);
virtual Float_t ConfPos(Int_t Ind);
virtual Int_t RefineIdUnknown(Int_t Ind);
virtual Int_t RefineIdPip(Int_t Ind);
virtual Int_t RefineIdProt(Int_t Ind);
virtual Int_t RefineIdEl(Int_t Ind);
virtual Int_t RefineIdPhot(Int_t Ind);
virtual Int_t RefineIdPim(Int_t Ind);
virtual Int_t RefineIdNeut(Int_t Ind);
virtual Int_t RefineIdKp(Int_t Ind);
virtual Int_t RefineIdDeut(Int_t Ind);
virtual Int_t RefineIdKm(Int_t Ind);
virtual Int_t RefineIdHe4(Int_t Ind);
virtual Int_t RefineIdHe3(Int_t Ind);
virtual Int_t RefineIdPos(Int_t Ind);
virtual Float_t CutConfMax(Float_t x,Float_t cut,Float_t width);
virtual Float_t CutConfMin(Float_t x,Float_t cut,Float_t width);
virtual Float_t ECUVWCut(Int_t Ind,Float_t WidthMultiply=0.);
virtual Float_t ECUVWCut(TEVNTClass *evnt,Float_t WidthMultiply=0.);
virtual Float_t EC_Eio_Cut(Int_t Ind,Float_t WidthMultiply=0.);
virtual Float_t EC_Eio_Cut(TEVNTClass *evnt,Float_t WidthMultiply=0.);
virtual Float_t CC_Phe_Cut(Int_t Ind,Float_t WidthMultiply=0.);
virtual Float_t CC_Phe_Cut(TEVNTClass *evnt,Float_t WidthMultiply=0.);
virtual Float_t GetDeltaT(Int_t Ind);
virtual Float_t GetDeltaT(TEVNTClass *evnt);
virtual Float_t GetDeltaT(TSCPBClass *sc,Float_t p,Int_t ipart );
virtual Float_t GetDeltaT_EC(TECPBClass *ec,Float_t p,Int_t ipart );
virtual Float_t Get_DC_Qual(Int_t Ind,Float_t Chi2,Float_t Width=0.5);
virtual Float_t BetaBetaCut(Int_t Ind, Float_t mass, Float_t Wieght, Float_t MaxDiff);
virtual Float_t NoCCCut(Int_t Ind,Float_t Weight);
virtual Float_t NoECCut(Int_t Ind,Float_t Weight);
virtual Float_t NoDCCut(Int_t Ind,Float_t Weight);
virtual Float_t NoSCCut(Int_t Ind,Float_t Weight);
TVERTClass* GetVert(Int_t PID1, Int_t num1, Int_t PID2, Int_t num2);
TVERTClass* Vert_Error_Handler(Int_t NRows,Int_t track1,Int_t track2);
inline Float_t GetBetaP(Float_t p,Int_t ipart);
inline Int_t IDtoInd(Int_t ID);
inline Int_t IDtoIndQuick();
Int_t IndtoID(Int_t Ind);
Bool_t CheckSCPaddle(TSCPBClass *sc);
Bool_t CheckSCPaddle(Int_t secidcode);
Bool_t CheckSCPaddle(Int_t sector,Int_t paddle);
Int_t SetBadPaddle(Int_t sector,Int_t paddle);
virtual void ChangeID(Int_t Ind, Int_t ID);
enum E_SortFlag_state{
kSortFlag_SortOn = 0x100,
kSortFlag_ConfidenceOn = 0x010,
kSortFlag_RefineIdOn = 0x001
};
ClassDef(TPartSieve,2)
};
inline Float_t TPartSieve::GetBetaP(Float_t p,Int_t ipart){
return(p/TMath::Sqrt(p*p + ClasTool::fgParticle_Mass[ipart]* ClasTool::fgParticle_Mass[ipart]));
}
inline Int_t TPartSieve::IDtoInd(Int_t PartId)
{
return fIndexSave = ClasTool::GetTypeFromPid(PartId);
}
inline Int_t TPartSieve::IDtoIndQuick()
{
return fIndexSave;
}
#endif
Author: Maurik Holtrop
Last update: PartSieve/TPartSieve:$Name: $:$Id: TPartSieve.cc,v 1.8 2007/03/01 22:27:00 holtrop Exp $
CopyLeft - This code is freely available.
ROOT Home page - ClasTool Class index - Class Hierarchy - Top of the page