Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 /// \file ClassifiedDamage.cc 28 /// \brief Implementation of the ClassifiedDamage class 29 30 #include "ClassifiedDamage.hh" 31 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 33 34 ClassifiedDamage::ClassifiedDamage() 35 { 36 fType = fNA; 37 fDamage.clear(); 38 fBp_begin = 0; 39 fBp_end = 0; 40 fComplexity = -1; 41 fIncludeBase = false; 42 } 43 44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 45 46 void ClassifiedDamage::AddDamage(Damage pDmg) 47 { 48 fDamage.push_back(pDmg); 49 } 50 51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 52 53 void ClassifiedDamage::ComputeBp() 54 { 55 fBp_begin = fDamage[0].GetCopyNb(); 56 fBp_end = fDamage[fDamage.size()-1].GetCopyNb(); 57 58 fBp_barycenter=0; 59 for(auto it=fDamage.begin();it!=fDamage.end();it++) 60 { 61 fBp_barycenter+=it->GetCopyNb(); 62 } 63 fBp_barycenter = fBp_barycenter/fDamage.size(); 64 } 65 66 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 67 68 void ClassifiedDamage::ComputePosition() 69 { 70 // TODO 71 } 72 73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 74 75 void ClassifiedDamage::ComputeComplexity() 76 { 77 if(fDamage.size()==0) 78 { 79 fComplexity = -1; 80 } 81 else 82 { 83 fComplexity = -1; 84 for(auto it=fDamage.begin();it!=fDamage.end();it++) 85 { 86 if((it->GetDamageType()==Damage::DamageType::fBackbone)) 87 { 88 fComplexity++; 89 } 90 else 91 { 92 if(fIncludeBase) 93 { 94 fComplexity++; 95 } 96 } 97 } 98 } 99 } 100 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 102 103 void ClassifiedDamage::ComputeType() 104 { 105 bool firstStrandTouched = false; 106 bool secondStrandTouched = false; 107 108 if(fDamage.size()==0) 109 { 110 fType = fNA; 111 } 112 else 113 { 114 for(auto it=fDamage.begin();it!=fDamage.end();it++) 115 { 116 if((it->GetDamageType()==Damage::DamageType::fBackbone)) 117 { 118 int strand = it->GetStrand(); 119 if(strand == 1) 120 { 121 firstStrandTouched = true; 122 } 123 if(strand == 2) 124 { 125 secondStrandTouched = true; 126 } 127 } 128 129 if (it->GetCause() == Damage::DamageCause::fDirect) { 130 fIsThereDirectContribution = true; 131 } 132 133 if (it->GetCause() == Damage::DamageCause::fIndirect) { 134 fIsThereIndirectContribution = true; 135 } 136 } 137 138 if(firstStrandTouched && secondStrandTouched) 139 { 140 fType = fDSB; 141 } 142 else 143 { 144 fType = fSSB; 145 } 146 } 147 } 148 149 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 150 151 void ClassifiedDamage::Reset() 152 { 153 fType = fNA; 154 fDamage.clear(); 155 fBp_begin = 0; 156 fBp_end = 0; 157 fComplexity = -1; 158 } 159