BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EventPreSelectAlg.h
Go to the documentation of this file.
1#pragma once
2
3#include <Gaudi/Property.h>
4#include <GaudiKernel/Algorithm.h>
5#include <array>
6#include <string>
7
8#include "EventPreSelect/IDimuPreSelectTool.h"
9#include "EventWriter/IEventWriterTool.h"
10
11class EventPreSelectAlg : public Algorithm {
12public:
13 using Algorithm::Algorithm;
14
15 StatusCode initialize() override;
16 StatusCode execute() override;
17 StatusCode finalize() override;
18
19private:
20 bool WhetherSector( double ph, double ph1, double ph2 );
21
22private:
23 static std::array<int, 43> idmax;
24
25 /**number of total events */
26 long m_events{ 0 };
27
28 /**number of events selected */
29 long m_barrelBhabhaNumber{ 0 };
30 long m_endcapBhabhaNumber{ 0 };
31 long m_barrelDimuNumber{ 0 };
32 long m_endcapDimuNumber{ 0 };
33 long m_hadronNumber{ 0 };
34 long m_barrelDiphotonNumber{ 0 };
35 long m_endcapDiphotonNumber{ 0 };
36
37 IDimuPreSelectTool* m_dimuTool;
38 std::map<std::string, IEventWriterTool*> m_preSelTools;
39
40 /* Properties */
41 BooleanProperty m_output{ this, "Output", false };
42 DoubleProperty m_ecm{ this, "Ecm", 3.686 };
43 BooleanProperty m_selectBhabha{ this, "SelectBhabha", false };
44 BooleanProperty m_selectDimu{ this, "SelectDimu", false };
45 BooleanProperty m_selectHadron{ this, "SelectHadron", false };
46 BooleanProperty m_selectDiphoton{ this, "SelectDiphoton", false };
47 BooleanProperty m_writeDst{ this, "WriteDst", false };
48 BooleanProperty m_writeRec{ this, "WriteRec", false };
49 DoubleProperty m_vr0cut{ this, "Vr0cut", 1.0 };
50 DoubleProperty m_vz0cut{ this, "Vz0cut", 5.0 };
51 DoubleProperty m_pt0HighCut{ this, "Pt0HighCut", 5.0 };
52 DoubleProperty m_pt0LowCut{ this, "Pt0LowCut", 0.05 };
53 DoubleProperty m_energyThreshold{ this, "EnergyThreshold", 0.05 };
54 DoubleProperty m_gammaPhiCut{ this, "GammaPhiCut", 20.0 };
55 DoubleProperty m_gammaThetaCut{ this, "GammaThetaCut", 20.0 };
56
57 DoubleProperty m_bhabhaEmcECut{ this, "BhabhaEmcECut", 0.7 * m_ecm };
58 DoubleProperty m_bhabhaMaxECut{ this, "BhabhaMaxECut", 0.3 * m_ecm };
59 DoubleProperty m_bhabhaSecECut{ this, "BhabhaSecECut", 0.1 * m_ecm };
60 DoubleProperty m_bhabhaDTheCut{ this, "BhabhaDTheCut", 3. };
61 DoubleProperty m_bhabhaDPhiCut1{ this, "BhabhaDPhiCut1", -25. };
62 DoubleProperty m_bhabhaDPhiCut2{ this, "BhabhaDPhiCut2", -4. };
63 DoubleProperty m_bhabhaDPhiCut3{ this, "BhabhaDPhiCut3", 2. };
64 DoubleProperty m_bhabhaDPhiCut4{ this, "BhabhaDPhiCut4", 20. };
65 IntegerProperty m_bhabhaMdcHitCutB{ this, "BhabhaMdcHitCutB", 15 };
66 IntegerProperty m_bhabhaMdcHitCutE{ this, "BhabhaMdcHitCutE", 5 };
67
68 DoubleProperty m_dimuEHighCut{ this, "DimuEHighCut", 0.27 * m_ecm };
69 DoubleProperty m_dimuELowCut{ this, "DimuELowCut", 0.027 * m_ecm };
70 DoubleProperty m_dimuDTheCut{ this, "DimuDTheCut", 3. };
71 DoubleProperty m_dimuDPhiCut{ this, "DimuDPhiCut", 23. };
72
73 DoubleProperty m_hadronChaECut{ this, "HadronChaECut", 0.3 * m_ecm };
74 DoubleProperty m_hadronNeuECut{ this, "HadronNeuECut", 0.3 * m_ecm };
75
76 DoubleProperty m_diphotonEmcECut{ this, "DiphotonEmcECut", 0.7 * m_ecm };
77 DoubleProperty m_diphotonSecECut{ this, "DiphotonSecECut", 0.3 * m_ecm };
78 DoubleProperty m_diphotonDTheCut{ this, "DiphotonDTheCut", 3. };
79 DoubleProperty m_diphotonDPhiCut1{ this, "DiphotonDPhiCut1", -4. };
80 DoubleProperty m_diphotonDPhiCut2{ this, "DiphotonDPhiCut2", 2. };
81
82 /* Tuples */
83 NTuple::Tuple* m_tuple0; // Trk2Sh2
84 NTuple::Item<double> m_esum;
85 NTuple::Item<double> m_eemc;
86 NTuple::Item<double> m_etot;
87 NTuple::Item<double> m_nGood;
88 NTuple::Item<double> m_nCharge;
89 NTuple::Item<double> m_nGam;
90 NTuple::Item<double> m_ptot;
91 NTuple::Item<double> m_pp;
92 NTuple::Item<double> m_pm;
93 NTuple::Item<long> m_runnb;
94 NTuple::Item<long> m_evtnb;
95 NTuple::Item<double> m_maxE;
96 NTuple::Item<double> m_secE;
97 NTuple::Item<double> m_dThe;
98 NTuple::Item<double> m_dPhi;
99 NTuple::Item<long> m_mdcHit1;
100 NTuple::Item<long> m_mdcHit2;
101
102 NTuple::Tuple* m_tuple1; // charged track vertex
103 NTuple::Item<double> m_vx0;
104 NTuple::Item<double> m_vy0;
105 NTuple::Item<double> m_vz0;
106 NTuple::Item<double> m_vr0;
107 NTuple::Item<double> m_theta0;
108 NTuple::Item<double> m_p0;
109 NTuple::Item<double> m_pt0;
110
111 NTuple::Tuple* m_tuple2; // photon
112 NTuple::Item<double> m_dthe;
113 NTuple::Item<double> m_dphi;
114 NTuple::Item<double> m_dang;
115 NTuple::Item<double> m_eraw;
116
117 NTuple::Tuple* m_tuple3; // for dimu selection
118};
StatusCode initialize() override
StatusCode finalize() override
StatusCode execute() override