1 #include "CoreUtils.hxx" 9 std::string skimFileName=
"";
15 void anaUtils::ConfigureTreeBranch(TTree* tree,
const char* bname,
void* add, TBranch** ptr){
18 if (!tree->FindLeaf(bname))
return;
19 tree->SetBranchAddress(bname,add,ptr);
26 for(
int i = 0; i < nObj; ++i){
35 for(
int i = 0; i < nObj; ++i){
41 void anaUtils::ReserveArray(Int_t* arr,
int n, Int_t ini){
44 for(
int i = 0; i < n; ++i){
51 void anaUtils::ReserveArray(Float_t* arr,
int n, Float_t ini){
54 for(
int i = 0; i < n; ++i){
61 void anaUtils::CopyArray(
const Int_t* src, Int_t* dest,
int n){
64 for(
int i = 0; i < n; ++i){
72 void anaUtils::CopyArray(
const Float_t* src, Float_t* dest,
int n){
75 for(
int i = 0; i < n; ++i){
82 void anaUtils::CopyArray(
const Double_t* src, Float_t* dest,
int n){
85 for(
int i = 0; i < n; ++i){
86 dest[i] = (Float_t) src[i];
95 for(
int i = 0; i < nObj; ++i){
96 tgtArr[i] = srcArr[i];
104 for(
int i = 0; i < nObj; ++i){
105 tgtArr[i] = srcArr[i];
110 void anaUtils::VectorToArray(
const TLorentzVector& v, Float_t* array){
112 for (UInt_t i=0; i<4;i++) array[i]=v[i];
116 void anaUtils::VectorToArray(
const TVector3& v, Float_t* array){
118 for (UInt_t i=0; i<3;i++) array[i]=v[i];
122 TVector3 anaUtils::ArrayToTVector3(
const Float_t* array){
126 for (UInt_t i=0; i<3;i++) v[i]=array[i];
131 TLorentzVector anaUtils::ArrayToTLorentzVector(
const Float_t* array){
135 for (UInt_t i=0; i<4;i++) v[i]=array[i];
144 for(
int i = 0; i < nObj; ++i){
150 void anaUtils::CreateArray(
AnaRecObjectC** &tgtArr,
int nObj){
154 for(
int i = 0; i < nObj; ++i){
164 for(
int i = 0; i < nObj; ++i){
170 void anaUtils::CreateArray(Float_t* &tgtArr,
int nObj, Float_t ini){
173 tgtArr =
new Float_t[nObj];
174 for(
int i = 0; i < nObj; ++i){
180 void anaUtils::CreateArray(Int_t* &tgtArr,
int nObj, Int_t ini){
183 tgtArr =
new Int_t[nObj];
184 for(
int i = 0; i < nObj; ++i){
190 void anaUtils::CreateArray(
bool* &tgtArr,
int nObj,
bool ini){
193 tgtArr =
new bool[nObj];
194 for(
int i = 0; i < nObj; ++i){
200 void anaUtils::ResizeArray(
AnaRecObjectC** &tgtArr,
int nObj){
214 void anaUtils::ResizeArray(Int_t* &tgtArr,
int nObj){
217 tgtArr = (Int_t*) realloc (tgtArr, nObj*
sizeof(Int_t));
226 for(
int i = 0; i < size; ++i){
227 product += array1[i]*array2[i];
233 bool anaUtils::CheckSkimmedEvent(Int_t sRun, Int_t sSubrun, Int_t sEvt){
236 if (skimFileName==
"")
return true;
238 static std::ifstream inputFile(skimFileName.c_str(), std::ios::in);
239 static bool first=
true;
240 static bool found=
true;
244 std::cerr <<
"Cannot open skim file '" << skimFileName <<
"'. Exit!" << std::endl;
251 static std::string run, subrun, evt;
253 if (found && !breakLoop){
254 if(!(inputFile >> run >> subrun >> evt)){breakLoop=
true;inputFile.close(); }
257 if (sRun == strtod(run.c_str(), &pEnd) &&
258 sSubrun == strtod(subrun.c_str(), &pEnd) &&
259 sEvt == strtod(evt.c_str(), &pEnd)){
Float_t ScalarProduct(Float_t *array1, Float_t *array2, Int_t size=3)
Scalar product of two Float_t arrays. Provided their size.
This namespace contains useful functions for analyses related to kinematics.