00001
00002
00003
00004
00005
00006
00007
00008
00010
00011
00012 #include "AlGamp.h"
00013 #include "BankClasses.h"
00014
00015
00016 AlGamp::AlGamp()
00017 {
00018 fake = NULL;
00019 }
00020
00021
00022 AlGamp::AlGamp(const AlGamp& oldG):QvecLink(oldG)
00023 {
00024 fake = oldG.fake;
00025 }
00026
00027 void AlGamp::SetFake(AlGamp* parent)
00028 {
00029 fake = parent;
00030 }
00031
00032 void AlGamp::UseCorrectedA4V()
00033 {
00034 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00035 {
00036 HepLorentzVector tmp(0,0,1,qvec->QD->PG->EC);
00037 tmp.setTheta(qvec->QD->PG->TC);
00038 tmp.setPhi(qvec->QD->PG->PC);
00039 tmp.setRho(qvec->QD->PG->EC);
00040 setA4V(tmp);
00041 }
00042 else
00043 setA4V(0,0,0,0);
00044 }
00045
00046 void AlGamp::UseStandardA4V()
00047 {
00048 if(qvec!=NULL)
00049 setA4V(qvec->QX, qvec->QY, qvec->QZ, qvec->QE);
00050 else
00051 setA4V(0,0,0,0);
00052 }
00053
00054 void AlGamp::UseRawA4V()
00055 {
00056 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00057 {
00058 HepLorentzVector tmp(0,0,1,qvec->QD->PG->ER);
00059 tmp.setTheta(qvec->QD->PG->TR);
00060 tmp.setPhi(qvec->QD->PG->PR);
00061 tmp.setRho(qvec->QD->PG->ER);
00062 setA4V(tmp);
00063 }
00064 else
00065 setA4V(0,0,0,0);
00066 }
00067
00068 HepLorentzVector AlGamp::GetCorrectedA4V() const
00069 {
00070 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00071 {
00072 HepLorentzVector tmp(0,0,1,qvec->QD->PG->EC);
00073 tmp.setTheta(qvec->QD->PG->TC);
00074 tmp.setPhi(qvec->QD->PG->PC);
00075 tmp.setRho(qvec->QD->PG->EC);
00076 return tmp;
00077 }
00078 else
00079 return HepLorentzVector(0,0,0,0);
00080 }
00081
00082 HepLorentzVector AlGamp::GetStandardA4V() const
00083 {
00084 if(qvec!=NULL)
00085 return HepLorentzVector(qvec->QX, qvec->QY, qvec->QZ, qvec->QE);
00086 else
00087 return HepLorentzVector(0,0,0,0);
00088 }
00089
00090 HepLorentzVector AlGamp::GetRawA4V() const
00091 {
00092 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00093 {
00094 HepLorentzVector tmp(0,0,1,qvec->QD->PG->ER);
00095 tmp.setTheta(qvec->QD->PG->TR);
00096 tmp.setPhi(qvec->QD->PG->PR);
00097 tmp.setRho(qvec->QD->PG->ER);
00098 return tmp;
00099 }
00100 else
00101 return HepLorentzVector(0,0,0,0);
00102 }
00103
00104 float AlGamp::EnergyFractionInStack(const int stack) const
00105 {
00106 if ((stack!=1)||(stack!=2)) return 0;
00107 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(stack==1))
00108 return qvec->QD->PG->R1;
00109 else if ((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(stack==2))
00110 return qvec->QD->PG->R2;
00111 else return -1;
00112 }
00113
00114 float AlGamp::EnergyFractionInCentralTowers() const
00115 {
00116 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00117 return qvec->QD->PG->F4;
00118 else return -1;
00119 }
00120
00121 float AlGamp::Isolation() const
00122 {
00123 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00124 return qvec->QD->PG->DM;
00125 else return -1;
00126 }
00127
00128 int AlGamp::StoreyFlag() const
00129 {
00130 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00131 return qvec->QD->PG->ST;
00132 else return -1;
00133 }
00134
00135 int AlGamp::QualityFlag() const
00136 {
00137 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00138 return qvec->QD->PG->QU;
00139 else return -1;
00140 }
00141
00142 float AlGamp::QualityEstimator(const int estimator) const
00143 {
00144 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(estimator==1))
00145 return qvec->QD->PG->Q1;
00146 else if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(estimator==2))
00147 return qvec->QD->PG->Q2;
00148 else return -1;
00149 }
00150
00151 float AlGamp::Moment(const int moment) const
00152 {
00153 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(moment==1))
00154 return qvec->QD->PG->M1;
00155 else if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL)&&(moment==2))
00156 return qvec->QD->PG->M2;
00157 else return -1;
00158 }
00159
00160 float AlGamp::Pi0Mass() const
00161 {
00162 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00163 return qvec->QD->PG->MA;
00164 else return -1;
00165 }
00166
00167 float AlGamp::ExpectedEnergyFractionInCentralTowers() const
00168 {
00169 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00170 return qvec->QD->PG->EF;
00171 else return -1;
00172 }
00173
00174 float AlGamp::GeometricalCorrection() const
00175 {
00176 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00177 return qvec->QD->PG->GC;
00178 else return -1;
00179 }
00180
00181 float AlGamp::ZeroSupression() const
00182 {
00183 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00184 return qvec->QD->PG->ZS;
00185 else return -1;
00186 }
00187
00188 float AlGamp::FakeEcalProbability() const
00189 {
00190 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00191 return qvec->QD->PG->PL;
00192 else return -1;
00193 }
00194
00195 float AlGamp::FakeHcalProbability() const
00196 {
00197 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00198 return qvec->QD->PG->PH;
00199 else return -1;
00200 }
00201
00202 AlGamp* AlGamp::ParentGivingFake() const
00203 {
00204 return fake;
00205 }
00206
00207 int AlGamp::FakeEquality() const
00208 {
00209 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00210 return qvec->QD->PG->FA;
00211 else return -1;
00212 }
00213
00214 int AlGamp::PecoObject() const
00215 {
00216 if((qvec!=NULL)&&(qvec->QD!=NULL)&&(qvec->QD->PG!=NULL))
00217 return qvec->QD->PG->PE;
00218 else return -1;
00219 }
00220