44 TFile* theFile =
new TFile(
AddInDir(fileName),
"UPDATE");
50 if (theTree->GetBranch(
fName)) {
51 std::cout <<
"Branch " <<
fName <<
" already exists in " << fileName << std::endl;
57 for (UInt_t iCorrector = 0; iCorrector !=
fCorrectors.size(); ++iCorrector) {
58 if (theTree->GetBranch(
fCorrectors[iCorrector]->GetName())) {
59 std::cout <<
"Branch " <<
fCorrectors[iCorrector]->GetName() <<
" already exists in " << fileName << std::endl;
64 std::cout <<
"Corrector has same name as merged name: " <<
fName << std::endl;
77 std::vector<TBranch*> fillBranches;
78 std::map<TString, Float_t> Addresses;
81 Addresses[
fName] = 0.0;
83 Addresses[
fName] = 1.0;
84 fillBranches.push_back(outTree->Branch(
fName, &(Addresses[
fName]), fName +
"/F"));
87 iCorrector->CompareFileName(fileName);
88 iCorrector->SetInTree(theTree);
90 TString checkName = iCorrector->GetName();
91 if (!outTree->GetBranch(checkName)) {
92 Addresses[checkName] = 1.0;
93 fillBranches.push_back(outTree->Branch(checkName, &(Addresses[checkName]), checkName +
"/F"));
99 std::map<TString,Float_t> mergeFactors;
100 for (UInt_t iMerge = 0; iMerge !=
fMergeFactors.size(); ++iMerge) {
102 theTree->SetBranchAddress(fMergeFactors[iMerge],&(mergeFactors[fMergeFactors[iMerge]]));
107 Float_t tempValue = 1.0;
108 for (Long64_t iEntry = 0; iEntry != nentries; ++iEntry) {
111 theTree->GetEntry(iEntry);
115 Addresses[
fName] = 0.0;
116 for (UInt_t iMerge = 0; iMerge !=
fMergeFactors.size(); ++iMerge)
122 Addresses[
fName] = 1.0;
123 for (UInt_t iMerge = 0; iMerge !=
fMergeFactors.size(); ++iMerge)
128 for (UInt_t iCorrector = 0; iCorrector != fCorrectors.size(); ++iCorrector)
129 Addresses[fCorrectors[iCorrector]->GetName()] = 1.0;
133 for (UInt_t iCorrector = 0; iCorrector != fCorrectors.size(); ++iCorrector) {
134 tempValue = fCorrectors[iCorrector]->Evaluate();
135 if (
fName !=
"" && fCorrectors[iCorrector]->
Merge) {
137 Addresses[
fName] += tempValue * tempValue;
139 Addresses[
fName] *= tempValue;
142 Addresses[fCorrectors[iCorrector]->GetName()] *= tempValue;
146 Addresses[
fName] = TMath::Sqrt(Addresses[
fName]);
150 for (UInt_t iBranch = 0; iBranch != fillBranches.size(); ++iBranch)
151 fillBranches[iBranch]->Fill();
170 *newCorrectorApplicator = *
this;
171 for (UInt_t iCorrector = 0; iCorrector != this->
fCorrectors.size(); ++iCorrector)
172 newCorrectorApplicator->
fCorrectors[iCorrector] = this->fCorrectors[iCorrector]->Copy();
173 return newCorrectorApplicator;