00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TARGETEDCELLKILLER_HPP_
00029 #define TARGETEDCELLKILLER_HPP_
00030
00031 #include "AbstractCellKiller.hpp"
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/base_object.hpp>
00035
00040 template<unsigned DIM>
00041 class TargetedCellKiller : public AbstractCellKiller<DIM>
00042 {
00043 private:
00044
00048 unsigned mTargetIndex;
00049
00050
00055 bool mBloodLust;
00056
00057
00059 friend class boost::serialization::access;
00071 template<class Archive>
00072 void serialize(Archive & archive, const unsigned int version)
00073 {
00074 archive & boost::serialization::base_object<AbstractCellKiller<DIM> >(*this);
00075
00076
00077 }
00078
00079 public:
00080
00088 TargetedCellKiller(AbstractCellPopulation<DIM>* pCellPopulation, unsigned targetedIndex, bool bloodLust = true);
00089
00093 unsigned GetTargetIndex() const;
00094
00098 unsigned GetBloodLust() const;
00099
00100
00105 void TestAndLabelCellsForApoptosisOrDeath();
00106
00115 void OutputCellKillerParameters(out_stream& rParamsFile);
00116 };
00117
00118 #include "SerializationExportWrapper.hpp"
00119 EXPORT_TEMPLATE_CLASS_SAME_DIMS(TargetedCellKiller)
00120
00121 namespace boost
00122 {
00123 namespace serialization
00124 {
00128 template<class Archive, unsigned DIM>
00129 inline void save_construct_data(
00130 Archive & ar, const TargetedCellKiller<DIM> * t, const BOOST_PFTO unsigned int file_version)
00131 {
00132
00133 const AbstractCellPopulation<DIM>* const p_cell_population = t->GetCellPopulation();
00134 ar << p_cell_population;
00135 unsigned targeted_index = t->GetTargetIndex();
00136 ar << targeted_index;
00137 bool blood_lust = t->GetBloodLust();
00138 ar << blood_lust;
00139 }
00140
00144 template<class Archive, unsigned DIM>
00145 inline void load_construct_data(
00146 Archive & ar, TargetedCellKiller<DIM> * t, const unsigned int file_version)
00147 {
00148
00149 AbstractCellPopulation<DIM>* p_cell_population;
00150 ar >> p_cell_population;
00151 unsigned targeted_index;
00152 ar >> targeted_index;
00153 bool blood_lust;
00154 ar >> blood_lust;
00155
00156
00157 ::new(t)TargetedCellKiller<DIM>(p_cell_population, targeted_index, blood_lust);
00158 }
00159 }
00160 }
00161
00162 #endif