Commit 63c90a885082ee58c02a4574e664ea722f5a5e17
1 parent
fe52f67e
Add publish parameter to ctools so that they can publish sky maps on a VO Hub.
The publish parameter has been added to the following tools: - ctbin - ctbkgcube - ctcubemask - ctexpcube - ctmodel - ctskymap - cttsmap
Showing
37 changed files
with
526 additions
and
149 deletions
ChangeLog
| 1 | -2016-02-22 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu> | 1 | +2016-02-24 Juergen Knoedlseder <jurgen.knodlseder@irap.omp.eu> |
| 2 | 2 | ||
| 3 | * Version 1.1.0 released | 3 | * Version 1.1.0 released |
| 4 | ======================== | 4 | ======================== |
| 5 | 5 | ||
| 6 | + Add publish() methods to tools producing images (#1231) | ||
| 6 | Read ahead output filename in cterror (#1700) | 7 | Read ahead output filename in cterror (#1700) |
| 7 | Subdivide simulation energy range in ctobssim (#1673) | 8 | Subdivide simulation energy range in ctobssim (#1673) |
| 8 | Delete existing events before simulation in ctobssim (#1663) | 9 | Delete existing events before simulation in ctobssim (#1663) |
NEWS
| @@ -2,7 +2,7 @@ New Features and Important Changes in ctools 1.1.0 | @@ -2,7 +2,7 @@ New Features and Important Changes in ctools 1.1.0 | ||
| 2 | 2 | ||
| 3 | Author(s) : Juergen Knoedlseder | 3 | Author(s) : Juergen Knoedlseder |
| 4 | 4 | ||
| 5 | -22 February 2016 | 5 | +24 February 2016 |
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | 1. Introduction | 8 | 1. Introduction |
| @@ -81,7 +81,8 @@ Intervals) extensions. | @@ -81,7 +81,8 @@ Intervals) extensions. | ||
| 81 | 81 | ||
| 82 | 7. ctbin - CTA event binning | 82 | 7. ctbin - CTA event binning |
| 83 | ---------------------------- | 83 | ---------------------------- |
| 84 | -None | 84 | +Add publish() method to publish the counts cube via a SAMP Hub to Virtual |
| 85 | +Observatory interoperable tools (e.g. Aladin). | ||
| 85 | 86 | ||
| 86 | 87 | ||
| 87 | 8. ctlike - Maximum likelihood fitting | 88 | 8. ctlike - Maximum likelihood fitting |
| @@ -89,24 +90,28 @@ None | @@ -89,24 +90,28 @@ None | ||
| 89 | None | 90 | None |
| 90 | 91 | ||
| 91 | 92 | ||
| 92 | -9. cttsmap - Generation of Test Statistics map | ||
| 93 | ----------------------------------------------- | ||
| 94 | -None | 93 | +9. cttsmap - Generation of Test Statistic map |
| 94 | +--------------------------------------------- | ||
| 95 | +Add publish() method to publish the Test Statistic map via a SAMP Hub to | ||
| 96 | +Virtual Observatory interoperable tools (e.g. Aladin). | ||
| 95 | 97 | ||
| 96 | 98 | ||
| 97 | 10. ctskymap - CTA sky mapping | 99 | 10. ctskymap - CTA sky mapping |
| 98 | ------------------------------ | 100 | ------------------------------ |
| 99 | -None | 101 | +Add publish() method to publish the sky map via a SAMP Hub to Virtual |
| 102 | +Observatory interoperable tools (e.g. Aladin). | ||
| 100 | 103 | ||
| 101 | 104 | ||
| 102 | 11. ctmodel - CTA counts cube modelling | 105 | 11. ctmodel - CTA counts cube modelling |
| 103 | --------------------------------------- | 106 | --------------------------------------- |
| 104 | -None | 107 | +Add publish() method to publish the model cube via a SAMP Hub to Virtual |
| 108 | +Observatory interoperable tools (e.g. Aladin). | ||
| 105 | 109 | ||
| 106 | 110 | ||
| 107 | 12. ctexpcube - CTA exposure cube generation | 111 | 12. ctexpcube - CTA exposure cube generation |
| 108 | -------------------------------------------- | 112 | -------------------------------------------- |
| 109 | -None | 113 | +Add publish() method to publish the exposure cube via a SAMP Hub to |
| 114 | +Virtual Observatory interoperable tools (e.g. Aladin). | ||
| 110 | 115 | ||
| 111 | 116 | ||
| 112 | 13. ctpsfcube - CTA point spread function cube generation | 117 | 13. ctpsfcube - CTA point spread function cube generation |
| @@ -116,12 +121,14 @@ None | @@ -116,12 +121,14 @@ None | ||
| 116 | 121 | ||
| 117 | 14. ctbkgcube - CTA background cube generation | 122 | 14. ctbkgcube - CTA background cube generation |
| 118 | ---------------------------------------------- | 123 | ---------------------------------------------- |
| 119 | -None | 124 | +Add publish() method to publish the background cube via a SAMP Hub to |
| 125 | +Virtual Observatory interoperable tools (e.g. Aladin). | ||
| 120 | 126 | ||
| 121 | 127 | ||
| 122 | 15. ctcubemask - CTA cube filtering | 128 | 15. ctcubemask - CTA cube filtering |
| 123 | ----------------------------------- | 129 | ----------------------------------- |
| 124 | -None | 130 | +Add publish() method to publish the masked counts cube via a SAMP Hub |
| 131 | +to Virtual Observatory interoperable tools (e.g. Aladin). | ||
| 125 | 132 | ||
| 126 | 133 | ||
| 127 | 16. ctbutterfly - Generate butterfly diagrams | 134 | 16. ctbutterfly - Generate butterfly diagrams |
doc/source/reference_manual/ctbin.rst
| @@ -78,6 +78,9 @@ General parameters | @@ -78,6 +78,9 @@ General parameters | ||
| 78 | Standard parameters | 78 | Standard parameters |
| 79 | ------------------- | 79 | ------------------- |
| 80 | 80 | ||
| 81 | +``(publish = no) [boolean]`` | ||
| 82 | + Specifies whether the counts cube should be published on VO Hub. | ||
| 83 | + | ||
| 81 | ``(chatter = 2) [integer]`` | 84 | ``(chatter = 2) [integer]`` |
| 82 | Verbosity of the executable: | 85 | Verbosity of the executable: |
| 83 | chatter = 0: no information will be logged | 86 | chatter = 0: no information will be logged |
| @@ -91,7 +94,7 @@ Standard parameters | @@ -91,7 +94,7 @@ Standard parameters | ||
| 91 | chatter = 4: detailed report about the task execution | 94 | chatter = 4: detailed report about the task execution |
| 92 | 95 | ||
| 93 | ``(clobber = yes) [boolean]`` | 96 | ``(clobber = yes) [boolean]`` |
| 94 | - Specifies whether an existing output counts cube should be overwritten. | 97 | + Specifies whether an existing output counts cube file should be overwritten. |
| 95 | 98 | ||
| 96 | ``(debug = no) [boolean]`` | 99 | ``(debug = no) [boolean]`` |
| 97 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 100 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
doc/source/reference_manual/ctbkgcube.rst
| @@ -111,6 +111,9 @@ General parameters | @@ -111,6 +111,9 @@ General parameters | ||
| 111 | Standard parameters | 111 | Standard parameters |
| 112 | ------------------- | 112 | ------------------- |
| 113 | 113 | ||
| 114 | +``(publish = no) [boolean]`` | ||
| 115 | + Specifies whether the background cube should be published on VO Hub. | ||
| 116 | + | ||
| 114 | ``(chatter = 2) [integer]`` | 117 | ``(chatter = 2) [integer]`` |
| 115 | Verbosity of the executable: | 118 | Verbosity of the executable: |
| 116 | chatter = 0: no information will be logged | 119 | chatter = 0: no information will be logged |
| @@ -124,7 +127,7 @@ Standard parameters | @@ -124,7 +127,7 @@ Standard parameters | ||
| 124 | chatter = 4: detailed report about the task execution | 127 | chatter = 4: detailed report about the task execution |
| 125 | 128 | ||
| 126 | ``(clobber = yes) [boolean]`` | 129 | ``(clobber = yes) [boolean]`` |
| 127 | - Specifies whether an existing output background cube should be overwritten. | 130 | + Specifies whether an existing output background cube file should be overwritten. |
| 128 | 131 | ||
| 129 | ``(debug = no) [boolean]`` | 132 | ``(debug = no) [boolean]`` |
| 130 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 133 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
doc/source/reference_manual/ctcubemask.rst
| @@ -69,6 +69,9 @@ General parameters | @@ -69,6 +69,9 @@ General parameters | ||
| 69 | Standard parameters | 69 | Standard parameters |
| 70 | ------------------- | 70 | ------------------- |
| 71 | 71 | ||
| 72 | +``(publish = no) [boolean]`` | ||
| 73 | + Specifies whether the counts cube should be published on VO Hub. | ||
| 74 | + | ||
| 72 | ``(chatter = 2) [integer]`` | 75 | ``(chatter = 2) [integer]`` |
| 73 | Verbosity of the executable: | 76 | Verbosity of the executable: |
| 74 | chatter = 0: no information will be logged | 77 | chatter = 0: no information will be logged |
| @@ -82,7 +85,7 @@ Standard parameters | @@ -82,7 +85,7 @@ Standard parameters | ||
| 82 | chatter = 4: detailed report about the task execution | 85 | chatter = 4: detailed report about the task execution |
| 83 | 86 | ||
| 84 | ``(clobber = yes) [boolean]`` | 87 | ``(clobber = yes) [boolean]`` |
| 85 | - Specifies whether an existing output counts cube should be overwritten. | 88 | + Specifies whether an existing output counts cube file should be overwritten. |
| 86 | 89 | ||
| 87 | ``(debug = no) [boolean]`` | 90 | ``(debug = no) [boolean]`` |
| 88 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 91 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
doc/source/reference_manual/ctexpcube.rst
| @@ -105,6 +105,9 @@ General parameters | @@ -105,6 +105,9 @@ General parameters | ||
| 105 | Standard parameters | 105 | Standard parameters |
| 106 | ------------------- | 106 | ------------------- |
| 107 | 107 | ||
| 108 | +``(publish = no) [boolean]`` | ||
| 109 | + Specifies whether the exposure cube should be published on VO Hub. | ||
| 110 | + | ||
| 108 | ``(chatter = 2) [integer]`` | 111 | ``(chatter = 2) [integer]`` |
| 109 | Verbosity of the executable: | 112 | Verbosity of the executable: |
| 110 | chatter = 0: no information will be logged | 113 | chatter = 0: no information will be logged |
| @@ -118,7 +121,7 @@ Standard parameters | @@ -118,7 +121,7 @@ Standard parameters | ||
| 118 | chatter = 4: detailed report about the task execution | 121 | chatter = 4: detailed report about the task execution |
| 119 | 122 | ||
| 120 | ``(clobber = yes) [boolean]`` | 123 | ``(clobber = yes) [boolean]`` |
| 121 | - Specifies whether an existing output exposure cube should be overwritten. | 124 | + Specifies whether an existing output exposure cube file should be overwritten. |
| 122 | 125 | ||
| 123 | ``(debug = no) [boolean]`` | 126 | ``(debug = no) [boolean]`` |
| 124 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 127 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
doc/source/reference_manual/ctmodel.rst
| @@ -138,6 +138,9 @@ General parameters | @@ -138,6 +138,9 @@ General parameters | ||
| 138 | Standard parameters | 138 | Standard parameters |
| 139 | ------------------- | 139 | ------------------- |
| 140 | 140 | ||
| 141 | +``(publish = no) [boolean]`` | ||
| 142 | + Specifies whether the model cube should be published on VO Hub. | ||
| 143 | + | ||
| 141 | ``(chatter = 2) [integer]`` | 144 | ``(chatter = 2) [integer]`` |
| 142 | Verbosity of the executable: | 145 | Verbosity of the executable: |
| 143 | chatter = 0: no information will be logged | 146 | chatter = 0: no information will be logged |
doc/source/reference_manual/ctskymap.rst
| @@ -60,6 +60,9 @@ General parameters | @@ -60,6 +60,9 @@ General parameters | ||
| 60 | Standard parameters | 60 | Standard parameters |
| 61 | ------------------- | 61 | ------------------- |
| 62 | 62 | ||
| 63 | +``(publish = no) [boolean]`` | ||
| 64 | + Specifies whether the sky map should be published on VO Hub. | ||
| 65 | + | ||
| 63 | ``(chatter = 2) [integer]`` | 66 | ``(chatter = 2) [integer]`` |
| 64 | Verbosity of the executable: | 67 | Verbosity of the executable: |
| 65 | chatter = 0: no information will be logged | 68 | chatter = 0: no information will be logged |
| @@ -73,7 +76,7 @@ Standard parameters | @@ -73,7 +76,7 @@ Standard parameters | ||
| 73 | chatter = 4: detailed report about the task execution | 76 | chatter = 4: detailed report about the task execution |
| 74 | 77 | ||
| 75 | ``(clobber = yes) [boolean]`` | 78 | ``(clobber = yes) [boolean]`` |
| 76 | - Specifies whether an existing output counts cube should be overwritten. | 79 | + Specifies whether an existing output sky map file should be overwritten. |
| 77 | 80 | ||
| 78 | ``(debug = no) [boolean]`` | 81 | ``(debug = no) [boolean]`` |
| 79 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 82 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
doc/source/reference_manual/cttsmap.rst
| @@ -94,6 +94,9 @@ General parameters | @@ -94,6 +94,9 @@ General parameters | ||
| 94 | Standard parameters | 94 | Standard parameters |
| 95 | ------------------- | 95 | ------------------- |
| 96 | 96 | ||
| 97 | +``(publish = no) [boolean]`` | ||
| 98 | + Specifies whether the TS map should be published on VO Hub. | ||
| 99 | + | ||
| 97 | ``(chatter = 2) [integer]`` | 100 | ``(chatter = 2) [integer]`` |
| 98 | Verbosity of the executable: | 101 | Verbosity of the executable: |
| 99 | chatter = 0: no information will be logged | 102 | chatter = 0: no information will be logged |
| @@ -107,7 +110,7 @@ Standard parameters | @@ -107,7 +110,7 @@ Standard parameters | ||
| 107 | chatter = 4: detailed report about the task execution | 110 | chatter = 4: detailed report about the task execution |
| 108 | 111 | ||
| 109 | ``(clobber = yes) [boolean]`` | 112 | ``(clobber = yes) [boolean]`` |
| 110 | - Specifies whether an existing output counts cube should be overwritten. | 113 | + Specifies whether an existing output TS map file should be overwritten. |
| 111 | 114 | ||
| 112 | ``(debug = no) [boolean]`` | 115 | ``(debug = no) [boolean]`` |
| 113 | Enables debug mode. In debug mode the executable will dump any log file output to the console. | 116 | Enables debug mode. In debug mode the executable will dump any log file output to the console. |
pyext/ctbin.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbin - Event binning tool * | 2 | * ctbin - Event binning tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2014 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GObservations& obs(void) const; | 51 | const GObservations& obs(void) const; |
| 51 | GCTAEventCube cube(void) const; | 52 | GCTAEventCube cube(void) const; |
| 52 | }; | 53 | }; |
pyext/ctbkgcube.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbkgcube - Background cube generation tool * | 2 | * ctbkgcube - Background cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 by Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GCTACubeBackground& bkgcube(void) const; | 51 | const GCTACubeBackground& bkgcube(void) const; |
| 51 | const GModels& models(void) const; | 52 | const GModels& models(void) const; |
| 52 | }; | 53 | }; |
pyext/ctcubemask.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctcubemask - Cube filter tool * | 2 | * ctcubemask - Cube filter tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014 Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GObservations& obs(void) const; | 51 | const GObservations& obs(void) const; |
| 51 | }; | 52 | }; |
| 52 | 53 |
pyext/ctexpcube.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctexpcube - Exposure cube generation tool * | 2 | * ctexpcube - Exposure cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2014-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GCTACubeExposure& expcube(void) const; | 51 | const GCTACubeExposure& expcube(void) const; |
| 51 | }; | 52 | }; |
| 52 | 53 |
pyext/ctmodel.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctmodel - Model cube generation tool * | 2 | * ctmodel - Model cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2012-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2012-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GObservations& obs(void) const; | 51 | const GObservations& obs(void) const; |
| 51 | const GCTAEventCube& cube(void) const; | 52 | const GCTAEventCube& cube(void) const; |
| 52 | void cube(const GCTAEventCube& cube); | 53 | void cube(const GCTAEventCube& cube); |
pyext/ctskymap.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctskymap - Sky mapping tool * | 2 | * ctskymap - Sky mapping tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2012-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2012-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GSkyMap& map(void) const; | 51 | const GSkyMap& map(void) const; |
| 51 | }; | 52 | }; |
| 52 | 53 |
pyext/cttsmap.i
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * cttsmap - TS map calculation tool * | 2 | * cttsmap - TS map calculation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Michael Mayer * | 4 | + * copyright (C) 2014-2016 by Michael Mayer * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -47,6 +47,7 @@ public: | @@ -47,6 +47,7 @@ public: | ||
| 47 | void clear(void); | 47 | void clear(void); |
| 48 | void run(void); | 48 | void run(void); |
| 49 | void save(void); | 49 | void save(void); |
| 50 | + void publish(const std::string& name = ""); | ||
| 50 | const GObservations& obs(void) const; | 51 | const GObservations& obs(void) const; |
| 51 | const GSkyMap& tsmap(void) const; | 52 | const GSkyMap& tsmap(void) const; |
| 52 | }; | 53 | }; |
src/ctbin/ctbin.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbin - Event binning tool * | 2 | * ctbin - Event binning tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -302,6 +302,11 @@ void ctbin::run(void) | @@ -302,6 +302,11 @@ void ctbin::run(void) | ||
| 302 | log << m_obs << std::endl; | 302 | log << m_obs << std::endl; |
| 303 | } | 303 | } |
| 304 | 304 | ||
| 305 | + // Optionally publish counts cube | ||
| 306 | + if (m_publish) { | ||
| 307 | + publish(); | ||
| 308 | + } | ||
| 309 | + | ||
| 305 | // Return | 310 | // Return |
| 306 | return; | 311 | return; |
| 307 | } | 312 | } |
| @@ -310,26 +315,18 @@ void ctbin::run(void) | @@ -310,26 +315,18 @@ void ctbin::run(void) | ||
| 310 | /***********************************************************************//** | 315 | /***********************************************************************//** |
| 311 | * @brief Save counts cube | 316 | * @brief Save counts cube |
| 312 | * | 317 | * |
| 313 | - * This method saves the counts cube into a FITS file. | 318 | + * Saves the counts cube into a FITS file. |
| 314 | ***************************************************************************/ | 319 | ***************************************************************************/ |
| 315 | void ctbin::save(void) | 320 | void ctbin::save(void) |
| 316 | { | 321 | { |
| 317 | // Write header | 322 | // Write header |
| 318 | if (logTerse()) { | 323 | if (logTerse()) { |
| 319 | log << std::endl; | 324 | log << std::endl; |
| 320 | - if (m_obs.size() > 1) { | ||
| 321 | - log.header1("Save observations"); | ||
| 322 | - } | ||
| 323 | - else { | ||
| 324 | - log.header1("Save observation"); | ||
| 325 | - } | 325 | + log.header1("Save counts cube"); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | - // Get output filename | ||
| 329 | - m_outcube = (*this)["outcube"].filename(); | ||
| 330 | - | ||
| 331 | // Save only if filename is non-empty | 328 | // Save only if filename is non-empty |
| 332 | - if (m_outcube.length() > 0) { | 329 | + if (!m_outcube.is_empty()) { |
| 333 | 330 | ||
| 334 | // Get CTA observation from observation container | 331 | // Get CTA observation from observation container |
| 335 | GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]); | 332 | GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]); |
| @@ -337,9 +334,9 @@ void ctbin::save(void) | @@ -337,9 +334,9 @@ void ctbin::save(void) | ||
| 337 | // Save only if observation is valid | 334 | // Save only if observation is valid |
| 338 | if (obs != NULL) { | 335 | if (obs != NULL) { |
| 339 | 336 | ||
| 340 | - // Dump filename | 337 | + // Log filename |
| 341 | if (logTerse()) { | 338 | if (logTerse()) { |
| 342 | - log << "Save \""+m_outcube+"\"" << std::endl; | 339 | + log << "Save \""+m_outcube+"\"." << std::endl; |
| 343 | } | 340 | } |
| 344 | 341 | ||
| 345 | // Save cube | 342 | // Save cube |
| @@ -354,6 +351,38 @@ void ctbin::save(void) | @@ -354,6 +351,38 @@ void ctbin::save(void) | ||
| 354 | } | 351 | } |
| 355 | 352 | ||
| 356 | 353 | ||
| 354 | +/***********************************************************************//** | ||
| 355 | + * @brief Publish counts cube | ||
| 356 | + * | ||
| 357 | + * @param[in] name Counts cube name. | ||
| 358 | + ***************************************************************************/ | ||
| 359 | +void ctbin::publish(const std::string& name) | ||
| 360 | +{ | ||
| 361 | + // Write header | ||
| 362 | + if (logTerse()) { | ||
| 363 | + log << std::endl; | ||
| 364 | + log.header1("Publish counts cube"); | ||
| 365 | + } | ||
| 366 | + | ||
| 367 | + // Set default name is user name is empty | ||
| 368 | + std::string user_name(name); | ||
| 369 | + if (user_name.empty()) { | ||
| 370 | + user_name = CTBIN_NAME; | ||
| 371 | + } | ||
| 372 | + | ||
| 373 | + // Log filename | ||
| 374 | + if (logTerse()) { | ||
| 375 | + log << "Publish \""+user_name+"\" counts cube." << std::endl; | ||
| 376 | + } | ||
| 377 | + | ||
| 378 | + // Publish counts cube | ||
| 379 | + m_cube.publish(user_name); | ||
| 380 | + | ||
| 381 | + // Return | ||
| 382 | + return; | ||
| 383 | +} | ||
| 384 | + | ||
| 385 | + | ||
| 357 | /*========================================================================== | 386 | /*========================================================================== |
| 358 | = = | 387 | = = |
| 359 | = Private methods = | 388 | = Private methods = |
| @@ -367,7 +396,8 @@ void ctbin::init_members(void) | @@ -367,7 +396,8 @@ void ctbin::init_members(void) | ||
| 367 | { | 396 | { |
| 368 | // Initialise members | 397 | // Initialise members |
| 369 | m_outcube.clear(); | 398 | m_outcube.clear(); |
| 370 | - m_usepnt = false; | 399 | + m_usepnt = false; |
| 400 | + m_publish = false; | ||
| 371 | 401 | ||
| 372 | // Initialise protected members | 402 | // Initialise protected members |
| 373 | m_obs.clear(); | 403 | m_obs.clear(); |
| @@ -392,6 +422,7 @@ void ctbin::copy_members(const ctbin& app) | @@ -392,6 +422,7 @@ void ctbin::copy_members(const ctbin& app) | ||
| 392 | // Copy attributes | 422 | // Copy attributes |
| 393 | m_outcube = app.m_outcube; | 423 | m_outcube = app.m_outcube; |
| 394 | m_usepnt = app.m_usepnt; | 424 | m_usepnt = app.m_usepnt; |
| 425 | + m_publish = app.m_publish; | ||
| 395 | 426 | ||
| 396 | // Copy protected members | 427 | // Copy protected members |
| 397 | m_obs = app.m_obs; | 428 | m_obs = app.m_obs; |
| @@ -452,6 +483,9 @@ void ctbin::get_parameters(void) | @@ -452,6 +483,9 @@ void ctbin::get_parameters(void) | ||
| 452 | // Get energy boundaries | 483 | // Get energy boundaries |
| 453 | m_ebounds = cube.ebounds(); | 484 | m_ebounds = cube.ebounds(); |
| 454 | 485 | ||
| 486 | + // Get remaining parameters | ||
| 487 | + m_publish = (*this)["publish"].boolean(); | ||
| 488 | + | ||
| 455 | // Optionally read ahead parameters so that they get correctly | 489 | // Optionally read ahead parameters so that they get correctly |
| 456 | // dumped into the log file | 490 | // dumped into the log file |
| 457 | if (read_ahead()) { | 491 | if (read_ahead()) { |
src/ctbin/ctbin.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbin - Event binning tool * | 2 | * ctbin - Event binning tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTBIN_NAME "ctbin" | 36 | #define CTBIN_NAME "ctbin" |
| 37 | -#define CTBIN_VERSION "1.0.0" | 37 | +#define CTBIN_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -78,6 +78,7 @@ public: | @@ -78,6 +78,7 @@ public: | ||
| 78 | void clear(void); | 78 | void clear(void); |
| 79 | void run(void); | 79 | void run(void); |
| 80 | void save(void); | 80 | void save(void); |
| 81 | + void publish(const std::string& name = ""); | ||
| 81 | const GObservations& obs(void) const; | 82 | const GObservations& obs(void) const; |
| 82 | GCTAEventCube cube(void) const; | 83 | GCTAEventCube cube(void) const; |
| 83 | 84 | ||
| @@ -91,8 +92,9 @@ protected: | @@ -91,8 +92,9 @@ protected: | ||
| 91 | void obs_cube(void); | 92 | void obs_cube(void); |
| 92 | 93 | ||
| 93 | // User parameters | 94 | // User parameters |
| 94 | - std::string m_outcube; //!< Output counts map file | 95 | + GFilename m_outcube; //!< Output counts map file name |
| 95 | bool m_usepnt; //!< Use pointing instead of xref/yref parameters | 96 | bool m_usepnt; //!< Use pointing instead of xref/yref parameters |
| 97 | + bool m_publish; //!< Publish counts cube? | ||
| 96 | 98 | ||
| 97 | // Protected members | 99 | // Protected members |
| 98 | GObservations m_obs; //!< Observation container | 100 | GObservations m_obs; //!< Observation container |
src/ctbin/ctbin.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctbin.par # | 7 | # File: ctbin.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Jurgen Knodlseder # | 10 | # Author: Jurgen Knodlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 11 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -44,6 +44,7 @@ proj, s, a, "CAR",AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | @@ -44,6 +44,7 @@ proj, s, a, "CAR",AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 44 | # | 44 | # |
| 45 | # Standard parameters | 45 | # Standard parameters |
| 46 | #==================== | 46 | #==================== |
| 47 | +publish, b, h, no,,, "Publish counts cube on VO Hub?" | ||
| 47 | chatter, i, h, 2,0,4, "Chattiness of output" | 48 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 48 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 49 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 49 | debug, b, h, no,,, "Debugging mode activated" | 50 | debug, b, h, no,,, "Debugging mode activated" |
src/ctbkgcube/ctbkgcube.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbkgcube - Background cube generation tool * | 2 | * ctbkgcube - Background cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 by Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -340,6 +340,11 @@ void ctbkgcube::run(void) | @@ -340,6 +340,11 @@ void ctbkgcube::run(void) | ||
| 340 | // Recover original models | 340 | // Recover original models |
| 341 | m_obs.models(models_orig); | 341 | m_obs.models(models_orig); |
| 342 | 342 | ||
| 343 | + // Optionally publish background cube | ||
| 344 | + if (m_publish) { | ||
| 345 | + publish(); | ||
| 346 | + } | ||
| 347 | + | ||
| 343 | // Return | 348 | // Return |
| 344 | return; | 349 | return; |
| 345 | } | 350 | } |
| @@ -348,7 +353,8 @@ void ctbkgcube::run(void) | @@ -348,7 +353,8 @@ void ctbkgcube::run(void) | ||
| 348 | /***********************************************************************//** | 353 | /***********************************************************************//** |
| 349 | * @brief Save background cube | 354 | * @brief Save background cube |
| 350 | * | 355 | * |
| 351 | - * Save the background cube into the file specified by the outfile parameter. | 356 | + * Save the background cube into a FITS file and the output model into an |
| 357 | + * XML file. | ||
| 352 | ***************************************************************************/ | 358 | ***************************************************************************/ |
| 353 | void ctbkgcube::save(void) | 359 | void ctbkgcube::save(void) |
| 354 | { | 360 | { |
| @@ -358,18 +364,30 @@ void ctbkgcube::save(void) | @@ -358,18 +364,30 @@ void ctbkgcube::save(void) | ||
| 358 | log.header1("Save background cube"); | 364 | log.header1("Save background cube"); |
| 359 | } | 365 | } |
| 360 | 366 | ||
| 361 | - // Get output filenames | ||
| 362 | - std::string outfile = (*this)["outcube"].filename(); | ||
| 363 | - std::string outmodel = (*this)["outmodel"].filename(); | 367 | + // Save only if filename is non-empty |
| 368 | + if (!m_outcube.is_empty()) { | ||
| 369 | + | ||
| 370 | + // Log filename | ||
| 371 | + if (logTerse()) { | ||
| 372 | + log << "Save \""+m_outcube+"\"." << std::endl; | ||
| 373 | + } | ||
| 364 | 374 | ||
| 365 | - // Save background cube | ||
| 366 | - m_background.save(outfile, clobber()); | 375 | + // Save background cube |
| 376 | + m_background.save(m_outcube, clobber()); | ||
| 377 | + | ||
| 378 | + } | ||
| 367 | 379 | ||
| 368 | // Write output models if filename is valid | 380 | // Write output models if filename is valid |
| 369 | - if ((outmodel.length() > 0) && (gammalib::tolower(outmodel) != "none")) { | 381 | + if ((!m_outmodel.is_empty()) && |
| 382 | + (gammalib::tolower(m_outmodel.url()) != "none")) { | ||
| 383 | + | ||
| 384 | + // Log filename | ||
| 385 | + if (logTerse()) { | ||
| 386 | + log << "Save \""+m_outmodel.url()+"\"." << std::endl; | ||
| 387 | + } | ||
| 370 | 388 | ||
| 371 | - // Save output model for binned analyses | ||
| 372 | - m_outmdl.save(outmodel); | 389 | + // Save output model for stacked analyses |
| 390 | + m_outmdl.save(m_outmodel.url()); | ||
| 373 | 391 | ||
| 374 | } | 392 | } |
| 375 | 393 | ||
| @@ -378,6 +396,38 @@ void ctbkgcube::save(void) | @@ -378,6 +396,38 @@ void ctbkgcube::save(void) | ||
| 378 | } | 396 | } |
| 379 | 397 | ||
| 380 | 398 | ||
| 399 | +/***********************************************************************//** | ||
| 400 | + * @brief Publish background cube | ||
| 401 | + * | ||
| 402 | + * @param[in] name Background cube name. | ||
| 403 | + ***************************************************************************/ | ||
| 404 | +void ctbkgcube::publish(const std::string& name) | ||
| 405 | +{ | ||
| 406 | + // Write header | ||
| 407 | + if (logTerse()) { | ||
| 408 | + log << std::endl; | ||
| 409 | + log.header1("Publish background cube"); | ||
| 410 | + } | ||
| 411 | + | ||
| 412 | + // Set default name is user name is empty | ||
| 413 | + std::string user_name(name); | ||
| 414 | + if (user_name.empty()) { | ||
| 415 | + user_name = CTBKGCUBE_NAME; | ||
| 416 | + } | ||
| 417 | + | ||
| 418 | + // Log filename | ||
| 419 | + if (logTerse()) { | ||
| 420 | + log << "Publish \""+user_name+"\" background cube." << std::endl; | ||
| 421 | + } | ||
| 422 | + | ||
| 423 | + // Publish exposure cube | ||
| 424 | + m_background.cube().publish(user_name); | ||
| 425 | + | ||
| 426 | + // Return | ||
| 427 | + return; | ||
| 428 | +} | ||
| 429 | + | ||
| 430 | + | ||
| 381 | /*========================================================================== | 431 | /*========================================================================== |
| 382 | = = | 432 | = = |
| 383 | = Private methods = | 433 | = Private methods = |
| @@ -392,6 +442,7 @@ void ctbkgcube::init_members(void) | @@ -392,6 +442,7 @@ void ctbkgcube::init_members(void) | ||
| 392 | // Initialise members | 442 | // Initialise members |
| 393 | m_outcube.clear(); | 443 | m_outcube.clear(); |
| 394 | m_outmodel.clear(); | 444 | m_outmodel.clear(); |
| 445 | + m_publish = false; | ||
| 395 | m_obs.clear(); | 446 | m_obs.clear(); |
| 396 | m_background.clear(); | 447 | m_background.clear(); |
| 397 | m_bkgmdl.clear(); | 448 | m_bkgmdl.clear(); |
| @@ -412,6 +463,7 @@ void ctbkgcube::copy_members(const ctbkgcube& app) | @@ -412,6 +463,7 @@ void ctbkgcube::copy_members(const ctbkgcube& app) | ||
| 412 | // Copy members | 463 | // Copy members |
| 413 | m_outmodel = app.m_outmodel; | 464 | m_outmodel = app.m_outmodel; |
| 414 | m_outcube = app.m_outcube; | 465 | m_outcube = app.m_outcube; |
| 466 | + m_publish = app.m_publish; | ||
| 415 | m_obs = app.m_obs; | 467 | m_obs = app.m_obs; |
| 416 | m_background = app.m_background; | 468 | m_background = app.m_background; |
| 417 | m_bkgmdl = app.m_bkgmdl; | 469 | m_bkgmdl = app.m_bkgmdl; |
| @@ -499,6 +551,9 @@ void ctbkgcube::get_parameters(void) | @@ -499,6 +551,9 @@ void ctbkgcube::get_parameters(void) | ||
| 499 | m_obs.models(models); | 551 | m_obs.models(models); |
| 500 | } | 552 | } |
| 501 | 553 | ||
| 554 | + // Get remaining parameters | ||
| 555 | + m_publish = (*this)["publish"].boolean(); | ||
| 556 | + | ||
| 502 | // Read output filenames (if needed) | 557 | // Read output filenames (if needed) |
| 503 | if (read_ahead()) { | 558 | if (read_ahead()) { |
| 504 | m_outcube = (*this)["outcube"].filename(); | 559 | m_outcube = (*this)["outcube"].filename(); |
src/ctbkgcube/ctbkgcube.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctbkgcube - Background cube generation tool * | 2 | * ctbkgcube - Background cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 by Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTBKGCUBE_NAME "ctbkgcube" | 36 | #define CTBKGCUBE_NAME "ctbkgcube" |
| 37 | -#define CTBKGCUBE_VERSION "1.0.0" | 37 | +#define CTBKGCUBE_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -59,6 +59,7 @@ public: | @@ -59,6 +59,7 @@ public: | ||
| 59 | void clear(void); | 59 | void clear(void); |
| 60 | void run(void); | 60 | void run(void); |
| 61 | void save(void); | 61 | void save(void); |
| 62 | + void publish(const std::string& name = ""); | ||
| 62 | const GCTACubeBackground& bkgcube(void) const; | 63 | const GCTACubeBackground& bkgcube(void) const; |
| 63 | const GModels& models(void) const; | 64 | const GModels& models(void) const; |
| 64 | 65 | ||
| @@ -70,11 +71,14 @@ protected: | @@ -70,11 +71,14 @@ protected: | ||
| 70 | void get_parameters(void); | 71 | void get_parameters(void); |
| 71 | void fill_cube(GCTAObservation* obs); | 72 | void fill_cube(GCTAObservation* obs); |
| 72 | 73 | ||
| 74 | + // User parameters | ||
| 75 | + GFilename m_outcube; //!< Filename of output cube | ||
| 76 | + GFilename m_outmodel; //!< Filename of output XML model | ||
| 77 | + bool m_publish; //!< Publish background cube? | ||
| 78 | + | ||
| 73 | // Protected members | 79 | // Protected members |
| 74 | - std::string m_outcube; //!< Filename of output cube | ||
| 75 | - std::string m_outmodel; //!< Filename of output XML model | ||
| 76 | GObservations m_obs; //!< Observation container | 80 | GObservations m_obs; //!< Observation container |
| 77 | - GCTACubeBackground m_background; //!< Background cube response | 81 | + GCTACubeBackground m_background; //!< Background cube |
| 78 | GModels m_bkgmdl; //!< CTA background models | 82 | GModels m_bkgmdl; //!< CTA background models |
| 79 | GModels m_outmdl; //!< Output models | 83 | GModels m_outmdl; //!< Output models |
| 80 | }; | 84 | }; |
src/ctbkgcube/ctbkgcube.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctbkgcube.par # | 7 | # File: ctbkgcube.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Chia-Chun Lu # | 10 | # Author: Chia-Chun Lu # |
| 11 | # c.lu@mpi-hd.mpg.de # | 11 | # c.lu@mpi-hd.mpg.de # |
| @@ -49,6 +49,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | @@ -49,6 +49,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 49 | # | 49 | # |
| 50 | # Standard parameters | 50 | # Standard parameters |
| 51 | #==================== | 51 | #==================== |
| 52 | +publish, b, h, no,,, "Publish sky map on VO Hub?" | ||
| 52 | chatter, i, h, 2,0,4, "Chattiness of output" | 53 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 53 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 54 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 54 | debug, b, h, no,,, "Debugging mode activated" | 55 | debug, b, h, no,,, "Debugging mode activated" |
src/ctcubemask/ctcubemask.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctcubemask - Cube filter tool * | 2 | * ctcubemask - Cube filter tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 by Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -282,6 +282,11 @@ void ctcubemask::run(void) | @@ -282,6 +282,11 @@ void ctcubemask::run(void) | ||
| 282 | log << m_obs << std::endl; | 282 | log << m_obs << std::endl; |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | + // Optionally publish counts cube | ||
| 286 | + if (m_publish) { | ||
| 287 | + publish(); | ||
| 288 | + } | ||
| 289 | + | ||
| 285 | // Return | 290 | // Return |
| 286 | return; | 291 | return; |
| 287 | } | 292 | } |
| @@ -312,10 +317,10 @@ void ctcubemask::save(void) | @@ -312,10 +317,10 @@ void ctcubemask::save(void) | ||
| 312 | if (logTerse()) { | 317 | if (logTerse()) { |
| 313 | log << std::endl; | 318 | log << std::endl; |
| 314 | if (m_obs.size() > 1) { | 319 | if (m_obs.size() > 1) { |
| 315 | - log.header1("Save observations"); | 320 | + log.header1("Save counts cubes"); |
| 316 | } | 321 | } |
| 317 | else { | 322 | else { |
| 318 | - log.header1("Save observation"); | 323 | + log.header1("Save counts cube"); |
| 319 | } | 324 | } |
| 320 | } | 325 | } |
| 321 | 326 | ||
| @@ -335,6 +340,52 @@ void ctcubemask::save(void) | @@ -335,6 +340,52 @@ void ctcubemask::save(void) | ||
| 335 | 340 | ||
| 336 | 341 | ||
| 337 | /***********************************************************************//** | 342 | /***********************************************************************//** |
| 343 | + * @brief Publish counts cube | ||
| 344 | + * | ||
| 345 | + * @param[in] name Counts cube name. | ||
| 346 | + * | ||
| 347 | + * Publishes the first counts cube in the observation container on the VO | ||
| 348 | + * Hub. | ||
| 349 | + ***************************************************************************/ | ||
| 350 | +void ctcubemask::publish(const std::string& name) | ||
| 351 | +{ | ||
| 352 | + // Write header | ||
| 353 | + if (logTerse()) { | ||
| 354 | + log << std::endl; | ||
| 355 | + log.header1("Publish counts cube"); | ||
| 356 | + } | ||
| 357 | + | ||
| 358 | + // Set default name is user name is empty | ||
| 359 | + std::string user_name(name); | ||
| 360 | + if (user_name.empty()) { | ||
| 361 | + user_name = CTCUBEMASK_NAME; | ||
| 362 | + } | ||
| 363 | + | ||
| 364 | + // Get first CTA observation from observation container | ||
| 365 | + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]); | ||
| 366 | + if (obs != NULL) { | ||
| 367 | + | ||
| 368 | + // Get counts cube | ||
| 369 | + GCTAEventCube* cube = dynamic_cast<GCTAEventCube*>(obs->events()); | ||
| 370 | + if (cube != NULL) { | ||
| 371 | + | ||
| 372 | + // Log filename | ||
| 373 | + if (logTerse()) { | ||
| 374 | + log << "Publish \""+user_name+"\" counts cube." << std::endl; | ||
| 375 | + } | ||
| 376 | + | ||
| 377 | + // Publish counts cube | ||
| 378 | + cube->map().publish(user_name); | ||
| 379 | + | ||
| 380 | + } | ||
| 381 | + } | ||
| 382 | + | ||
| 383 | + // Return | ||
| 384 | + return; | ||
| 385 | +} | ||
| 386 | + | ||
| 387 | + | ||
| 388 | +/***********************************************************************//** | ||
| 338 | * @brief Get application parameters | 389 | * @brief Get application parameters |
| 339 | * | 390 | * |
| 340 | * @exception GException::invalid_value | 391 | * @exception GException::invalid_value |
| @@ -402,10 +453,14 @@ void ctcubemask::get_parameters(void) | @@ -402,10 +453,14 @@ void ctcubemask::get_parameters(void) | ||
| 402 | m_select_energy = false; | 453 | m_select_energy = false; |
| 403 | } | 454 | } |
| 404 | 455 | ||
| 456 | + // Get remaining parameters | ||
| 457 | + m_publish = (*this)["publish"].boolean(); | ||
| 458 | + | ||
| 405 | // Optionally read ahead parameters so that they get correctly | 459 | // Optionally read ahead parameters so that they get correctly |
| 406 | // dumped into the log file | 460 | // dumped into the log file |
| 407 | if (read_ahead()) { | 461 | if (read_ahead()) { |
| 408 | m_outcube = (*this)["outcube"].filename(); | 462 | m_outcube = (*this)["outcube"].filename(); |
| 463 | + m_prefix = (*this)["prefix"].string(); | ||
| 409 | } | 464 | } |
| 410 | 465 | ||
| 411 | // Return | 466 | // Return |
| @@ -586,12 +641,13 @@ void ctcubemask::init_members(void) | @@ -586,12 +641,13 @@ void ctcubemask::init_members(void) | ||
| 586 | m_regfile.clear(); | 641 | m_regfile.clear(); |
| 587 | m_outcube.clear(); | 642 | m_outcube.clear(); |
| 588 | m_prefix.clear(); | 643 | m_prefix.clear(); |
| 589 | - m_usepnt = false; | ||
| 590 | - m_ra = 0.0; | ||
| 591 | - m_dec = 0.0; | ||
| 592 | - m_rad = 0.0; | ||
| 593 | - m_emin = 0.0; | ||
| 594 | - m_emax = 0.0; | 644 | + m_usepnt = false; |
| 645 | + m_ra = 0.0; | ||
| 646 | + m_dec = 0.0; | ||
| 647 | + m_rad = 0.0; | ||
| 648 | + m_emin = 0.0; | ||
| 649 | + m_emax = 0.0; | ||
| 650 | + m_publish = false; | ||
| 595 | 651 | ||
| 596 | // Initialise protected members | 652 | // Initialise protected members |
| 597 | m_obs.clear(); | 653 | m_obs.clear(); |
| @@ -621,6 +677,7 @@ void ctcubemask::copy_members(const ctcubemask& app) | @@ -621,6 +677,7 @@ void ctcubemask::copy_members(const ctcubemask& app) | ||
| 621 | m_rad = app.m_rad; | 677 | m_rad = app.m_rad; |
| 622 | m_emin = app.m_emin; | 678 | m_emin = app.m_emin; |
| 623 | m_emax = app.m_emax; | 679 | m_emax = app.m_emax; |
| 680 | + m_publish = app.m_publish; | ||
| 624 | 681 | ||
| 625 | // Copy protected members | 682 | // Copy protected members |
| 626 | m_obs = app.m_obs; | 683 | m_obs = app.m_obs; |
| @@ -705,14 +762,21 @@ std::string ctcubemask::set_outfile_name(const std::string& filename) const | @@ -705,14 +762,21 @@ std::string ctcubemask::set_outfile_name(const std::string& filename) const | ||
| 705 | ***************************************************************************/ | 762 | ***************************************************************************/ |
| 706 | void ctcubemask::save_fits(void) | 763 | void ctcubemask::save_fits(void) |
| 707 | { | 764 | { |
| 708 | - // Get output filename | ||
| 709 | - m_outcube = (*this)["outcube"].filename(); | 765 | + // Save only if filename is non-empty |
| 766 | + if (!m_outcube.is_empty()) { | ||
| 710 | 767 | ||
| 711 | - // Get CTA observation from observation container | ||
| 712 | - GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]); | 768 | + // Get CTA observation from observation container |
| 769 | + GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[0]); | ||
| 713 | 770 | ||
| 714 | - // Save event list | ||
| 715 | - save_counts_map(obs, m_outcube); | 771 | + // Log filename |
| 772 | + if (logTerse()) { | ||
| 773 | + log << "Save \""+m_outcube+"\"." << std::endl; | ||
| 774 | + } | ||
| 775 | + | ||
| 776 | + // Save event list | ||
| 777 | + save_counts_map(obs, m_outcube); | ||
| 778 | + | ||
| 779 | + } | ||
| 716 | 780 | ||
| 717 | // Return | 781 | // Return |
| 718 | return; | 782 | return; |
| @@ -732,12 +796,8 @@ void ctcubemask::save_fits(void) | @@ -732,12 +796,8 @@ void ctcubemask::save_fits(void) | ||
| 732 | ***************************************************************************/ | 796 | ***************************************************************************/ |
| 733 | void ctcubemask::save_xml(void) | 797 | void ctcubemask::save_xml(void) |
| 734 | { | 798 | { |
| 735 | - // Get output filename and prefix | ||
| 736 | - m_outcube = (*this)["m_outcube"].filename(); | ||
| 737 | - m_prefix = (*this)["prefix"].string(); | ||
| 738 | - | ||
| 739 | // Issue warning if output filename has no .xml suffix | 799 | // Issue warning if output filename has no .xml suffix |
| 740 | - std::string suffix = gammalib::tolower(m_outcube.substr(m_outcube.length()-4,4)); | 800 | + std::string suffix = gammalib::tolower(m_outcube.url().substr(m_outcube.length()-4,4)); |
| 741 | if (suffix != ".xml") { | 801 | if (suffix != ".xml") { |
| 742 | log << "*** WARNING: Name of observation definition output file \""+ | 802 | log << "*** WARNING: Name of observation definition output file \""+ |
| 743 | m_outcube+"\"" << std::endl; | 803 | m_outcube+"\"" << std::endl; |
| @@ -763,6 +823,11 @@ void ctcubemask::save_xml(void) | @@ -763,6 +823,11 @@ void ctcubemask::save_xml(void) | ||
| 763 | // Store output file name in observation | 823 | // Store output file name in observation |
| 764 | obs->eventfile(outfile); | 824 | obs->eventfile(outfile); |
| 765 | 825 | ||
| 826 | + // Log filename | ||
| 827 | + if (logTerse()) { | ||
| 828 | + log << "Save \""+outfile+"\"." << std::endl; | ||
| 829 | + } | ||
| 830 | + | ||
| 766 | // Save event list | 831 | // Save event list |
| 767 | save_counts_map(obs, outfile); | 832 | save_counts_map(obs, outfile); |
| 768 | 833 |
src/ctcubemask/ctcubemask.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctcubemask - Cube filter tool * | 2 | * ctcubemask - Cube filter tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Chia-Chun Lu * | 4 | + * copyright (C) 2014-2016 by Chia-Chun Lu * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
| 36 | 36 | ||
| 37 | /* __Definitions _________________________________________________________ */ | 37 | /* __Definitions _________________________________________________________ */ |
| 38 | #define CTCUBEMASK_NAME "ctcubemask" | 38 | #define CTCUBEMASK_NAME "ctcubemask" |
| 39 | -#define CTCUBEMASK_VERSION "1.0.0" | 39 | +#define CTCUBEMASK_VERSION "1.1.0" |
| 40 | 40 | ||
| 41 | 41 | ||
| 42 | /***********************************************************************//** | 42 | /***********************************************************************//** |
| @@ -61,6 +61,7 @@ public: | @@ -61,6 +61,7 @@ public: | ||
| 61 | void clear(void); | 61 | void clear(void); |
| 62 | void run(void); | 62 | void run(void); |
| 63 | void save(void); | 63 | void save(void); |
| 64 | + void publish(const std::string& name = ""); | ||
| 64 | const GObservations& obs(void) const; | 65 | const GObservations& obs(void) const; |
| 65 | 66 | ||
| 66 | protected: | 67 | protected: |
| @@ -78,9 +79,8 @@ protected: | @@ -78,9 +79,8 @@ protected: | ||
| 78 | const std::string& outfile) const; | 79 | const std::string& outfile) const; |
| 79 | 80 | ||
| 80 | // User parameters | 81 | // User parameters |
| 81 | - //std::string m_infile; //!< Input event list or XML file | ||
| 82 | - std::string m_regfile; //!< ds9 region file | ||
| 83 | - std::string m_outcube; //!< Output event list or XML file | 82 | + GFilename m_regfile; //!< ds9 region file |
| 83 | + GFilename m_outcube; //!< Output event list or XML file | ||
| 84 | std::string m_prefix; //!< Prefix for multiple counts maps | 84 | std::string m_prefix; //!< Prefix for multiple counts maps |
| 85 | bool m_usepnt; //!< Use pointing instead of RA/DEC parameters | 85 | bool m_usepnt; //!< Use pointing instead of RA/DEC parameters |
| 86 | double m_ra; //!< RA of ROI centre | 86 | double m_ra; //!< RA of ROI centre |
| @@ -88,6 +88,7 @@ protected: | @@ -88,6 +88,7 @@ protected: | ||
| 88 | double m_rad; //!< ROI radius | 88 | double m_rad; //!< ROI radius |
| 89 | double m_emin; //!< Lower energy | 89 | double m_emin; //!< Lower energy |
| 90 | double m_emax; //!< Upper energy | 90 | double m_emax; //!< Upper energy |
| 91 | + bool m_publish; //!< Publish counts cube? | ||
| 91 | 92 | ||
| 92 | // Protected members | 93 | // Protected members |
| 93 | GObservations m_obs; //!< Observations container | 94 | GObservations m_obs; //!< Observations container |
src/ctcubemask/ctcubemask.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctcubemask.par # | 7 | # File: ctcubemask.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Chia-Chun Lu # | 10 | # Author: Chia-Chun Lu # |
| 11 | # c.lu@mpi-hd.mpg.de # | 11 | # c.lu@mpi-hd.mpg.de # |
| @@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
| 17 | # | 17 | # |
| 18 | # General parameters | 18 | # General parameters |
| 19 | #=================== | 19 | #=================== |
| 20 | -inobs, f, a, "cntmap.fits",,, "Input counts cube or observation definition XML file" | 20 | +inobs, f, a, "cntcube.fits",,, "Input counts cube or observation definition XML file" |
| 21 | outcube, f, a, "filtered_cube.fits",,, "Output counts cube or observation definition XML file" | 21 | outcube, f, a, "filtered_cube.fits",,, "Output counts cube or observation definition XML file" |
| 22 | prefix, s, h, "filtered_",,, "Prefix for counts cube in observation definition XML file" | 22 | prefix, s, h, "filtered_",,, "Prefix for counts cube in observation definition XML file" |
| 23 | 23 | ||
| @@ -35,7 +35,9 @@ emax, r, a, 100.0,,, "Upper energy limit (TeV)" | @@ -35,7 +35,9 @@ emax, r, a, 100.0,,, "Upper energy limit (TeV)" | ||
| 35 | # | 35 | # |
| 36 | # Standard parameters | 36 | # Standard parameters |
| 37 | #==================== | 37 | #==================== |
| 38 | +publish, b, h, no,,, "Publish counts cube on VO Hub?" | ||
| 38 | chatter, i, h, 2,0,4, "Chattiness of output" | 39 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 39 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 40 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 40 | debug, b, h, no,,, "Debugging mode activated" | 41 | debug, b, h, no,,, "Debugging mode activated" |
| 41 | mode, s, h, "ql",,, "Mode of automatic parameters" | 42 | mode, s, h, "ql",,, "Mode of automatic parameters" |
| 43 | +logfile, f, h, "ctcubemask.par.log",,, "Log filename" |
src/ctexpcube/ctexpcube.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctexpcube - Exposure cube generation tool * | 2 | * ctexpcube - Exposure cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2014-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -258,6 +258,11 @@ void ctexpcube::run(void) | @@ -258,6 +258,11 @@ void ctexpcube::run(void) | ||
| 258 | } | 258 | } |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | + // Optionally publish exposure cube | ||
| 262 | + if (m_publish) { | ||
| 263 | + publish(); | ||
| 264 | + } | ||
| 265 | + | ||
| 261 | // Return | 266 | // Return |
| 262 | return; | 267 | return; |
| 263 | } | 268 | } |
| @@ -265,6 +270,8 @@ void ctexpcube::run(void) | @@ -265,6 +270,8 @@ void ctexpcube::run(void) | ||
| 265 | 270 | ||
| 266 | /***********************************************************************//** | 271 | /***********************************************************************//** |
| 267 | * @brief Save exposure cube | 272 | * @brief Save exposure cube |
| 273 | + * | ||
| 274 | + * Saves the exposure cube into a FITS file. | ||
| 268 | ***************************************************************************/ | 275 | ***************************************************************************/ |
| 269 | void ctexpcube::save(void) | 276 | void ctexpcube::save(void) |
| 270 | { | 277 | { |
| @@ -274,11 +281,50 @@ void ctexpcube::save(void) | @@ -274,11 +281,50 @@ void ctexpcube::save(void) | ||
| 274 | log.header1("Save exposure cube"); | 281 | log.header1("Save exposure cube"); |
| 275 | } | 282 | } |
| 276 | 283 | ||
| 277 | - // Get output filename | ||
| 278 | - m_outcube = (*this)["outcube"].filename(); | 284 | + // Save only if filename is non-empty |
| 285 | + if (!m_outcube.is_empty()) { | ||
| 286 | + | ||
| 287 | + // Log filename | ||
| 288 | + if (logTerse()) { | ||
| 289 | + log << "Save \""+m_outcube+"\"." << std::endl; | ||
| 290 | + } | ||
| 291 | + | ||
| 292 | + // Save exposure cube | ||
| 293 | + m_expcube.save(m_outcube, clobber()); | ||
| 294 | + | ||
| 295 | + } | ||
| 296 | + | ||
| 297 | + // Return | ||
| 298 | + return; | ||
| 299 | +} | ||
| 300 | + | ||
| 301 | + | ||
| 302 | +/***********************************************************************//** | ||
| 303 | + * @brief Publish exposure cube | ||
| 304 | + * | ||
| 305 | + * @param[in] name Exposure cube name. | ||
| 306 | + ***************************************************************************/ | ||
| 307 | +void ctexpcube::publish(const std::string& name) | ||
| 308 | +{ | ||
| 309 | + // Write header | ||
| 310 | + if (logTerse()) { | ||
| 311 | + log << std::endl; | ||
| 312 | + log.header1("Publish exposure cube"); | ||
| 313 | + } | ||
| 314 | + | ||
| 315 | + // Set default name is user name is empty | ||
| 316 | + std::string user_name(name); | ||
| 317 | + if (user_name.empty()) { | ||
| 318 | + user_name = CTEXPCUBE_NAME; | ||
| 319 | + } | ||
| 279 | 320 | ||
| 280 | - // Save exposure cube | ||
| 281 | - m_expcube.save(m_outcube, clobber()); | 321 | + // Log filename |
| 322 | + if (logTerse()) { | ||
| 323 | + log << "Publish \""+user_name+"\" exposure cube." << std::endl; | ||
| 324 | + } | ||
| 325 | + | ||
| 326 | + // Publish exposure cube | ||
| 327 | + m_expcube.cube().publish(user_name); | ||
| 282 | 328 | ||
| 283 | // Return | 329 | // Return |
| 284 | return; | 330 | return; |
| @@ -299,6 +345,7 @@ void ctexpcube::init_members(void) | @@ -299,6 +345,7 @@ void ctexpcube::init_members(void) | ||
| 299 | // Initialise members | 345 | // Initialise members |
| 300 | m_outcube.clear(); | 346 | m_outcube.clear(); |
| 301 | m_apply_edisp = false; | 347 | m_apply_edisp = false; |
| 348 | + m_publish = false; | ||
| 302 | 349 | ||
| 303 | // Initialise protected members | 350 | // Initialise protected members |
| 304 | m_obs.clear(); | 351 | m_obs.clear(); |
| @@ -319,6 +366,7 @@ void ctexpcube::copy_members(const ctexpcube& app) | @@ -319,6 +366,7 @@ void ctexpcube::copy_members(const ctexpcube& app) | ||
| 319 | // Copy attributes | 366 | // Copy attributes |
| 320 | m_outcube = app.m_outcube; | 367 | m_outcube = app.m_outcube; |
| 321 | m_apply_edisp = app.m_apply_edisp; | 368 | m_apply_edisp = app.m_apply_edisp; |
| 369 | + m_publish = app.m_publish; | ||
| 322 | 370 | ||
| 323 | // Copy protected members | 371 | // Copy protected members |
| 324 | m_obs = app.m_obs; | 372 | m_obs = app.m_obs; |
| @@ -390,6 +438,9 @@ void ctexpcube::get_parameters(void) | @@ -390,6 +438,9 @@ void ctexpcube::get_parameters(void) | ||
| 390 | 438 | ||
| 391 | } // endelse: cube loaded from file | 439 | } // endelse: cube loaded from file |
| 392 | 440 | ||
| 441 | + // Get remaining parameters | ||
| 442 | + m_publish = (*this)["publish"].boolean(); | ||
| 443 | + | ||
| 393 | // Read output filename (if needed) | 444 | // Read output filename (if needed) |
| 394 | if (read_ahead()) { | 445 | if (read_ahead()) { |
| 395 | m_outcube = (*this)["outcube"].filename(); | 446 | m_outcube = (*this)["outcube"].filename(); |
src/ctexpcube/ctexpcube.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctexpcube - Exposure cube generation tool * | 2 | * ctexpcube - Exposure cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2014-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTEXPCUBE_NAME "ctexpcube" | 36 | #define CTEXPCUBE_NAME "ctexpcube" |
| 37 | -#define CTEXPCUBE_VERSION "1.0.0" | 37 | +#define CTEXPCUBE_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -59,6 +59,7 @@ public: | @@ -59,6 +59,7 @@ public: | ||
| 59 | void clear(void); | 59 | void clear(void); |
| 60 | void run(void); | 60 | void run(void); |
| 61 | void save(void); | 61 | void save(void); |
| 62 | + void publish(const std::string& name = ""); | ||
| 62 | const GCTACubeExposure& expcube(void) const; | 63 | const GCTACubeExposure& expcube(void) const; |
| 63 | 64 | ||
| 64 | protected: | 65 | protected: |
| @@ -69,8 +70,9 @@ protected: | @@ -69,8 +70,9 @@ protected: | ||
| 69 | void get_parameters(void); | 70 | void get_parameters(void); |
| 70 | 71 | ||
| 71 | // User parameters | 72 | // User parameters |
| 72 | - std::string m_outcube; //!< Output exposure cube file | ||
| 73 | - bool m_apply_edisp; //!< Apply energy dispersion? | 73 | + GFilename m_outcube; //!< Output exposure cube file |
| 74 | + bool m_apply_edisp; //!< Apply energy dispersion? | ||
| 75 | + bool m_publish; //!< Publish exposure cube? | ||
| 74 | 76 | ||
| 75 | // Protected members | 77 | // Protected members |
| 76 | GObservations m_obs; //!< Observation container | 78 | GObservations m_obs; //!< Observation container |
src/ctexpcube/ctexpcube.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctexpcube.par # | 7 | # File: ctexpcube.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Juergen Knoedlseder # | 10 | # Author: Juergen Knoedlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 11 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -48,6 +48,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | @@ -48,6 +48,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 48 | # | 48 | # |
| 49 | # Standard parameters | 49 | # Standard parameters |
| 50 | #==================== | 50 | #==================== |
| 51 | +publish, b, h, no,,, "Publish sky map on VO Hub?" | ||
| 51 | chatter, i, h, 2,0,4, "Chattiness of output" | 52 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 52 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 53 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 53 | debug, b, h, no,,, "Debugging mode activated" | 54 | debug, b, h, no,,, "Debugging mode activated" |
src/ctmodel/ctmodel.cpp
| @@ -324,6 +324,11 @@ void ctmodel::run(void) | @@ -324,6 +324,11 @@ void ctmodel::run(void) | ||
| 324 | } | 324 | } |
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | + // Optionally publish model cube | ||
| 328 | + if (m_publish) { | ||
| 329 | + publish(); | ||
| 330 | + } | ||
| 331 | + | ||
| 327 | // Return | 332 | // Return |
| 328 | return; | 333 | return; |
| 329 | } | 334 | } |
| @@ -343,15 +348,12 @@ void ctmodel::save(void) | @@ -343,15 +348,12 @@ void ctmodel::save(void) | ||
| 343 | log.header1("Save cube"); | 348 | log.header1("Save cube"); |
| 344 | } | 349 | } |
| 345 | 350 | ||
| 346 | - // Make sure we have the FITS filename | ||
| 347 | - m_outcube = (*this)["outcube"].filename(); | ||
| 348 | - | ||
| 349 | // Save only if filename is non-empty | 351 | // Save only if filename is non-empty |
| 350 | - if (m_outcube.length() > 0) { | 352 | + if (!m_outcube.is_empty()) { |
| 351 | 353 | ||
| 352 | // Dump filename | 354 | // Dump filename |
| 353 | if (logTerse()) { | 355 | if (logTerse()) { |
| 354 | - log << "Save \""+m_outcube+"\"" << std::endl; | 356 | + log << "Save \""+m_outcube+"\"." << std::endl; |
| 355 | } | 357 | } |
| 356 | 358 | ||
| 357 | // Save model cube into FITS file | 359 | // Save model cube into FITS file |
| @@ -365,6 +367,38 @@ void ctmodel::save(void) | @@ -365,6 +367,38 @@ void ctmodel::save(void) | ||
| 365 | 367 | ||
| 366 | 368 | ||
| 367 | /***********************************************************************//** | 369 | /***********************************************************************//** |
| 370 | + * @brief Publish model cube | ||
| 371 | + * | ||
| 372 | + * @param[in] name Model cube name. | ||
| 373 | + ***************************************************************************/ | ||
| 374 | +void ctmodel::publish(const std::string& name) | ||
| 375 | +{ | ||
| 376 | + // Write header | ||
| 377 | + if (logTerse()) { | ||
| 378 | + log << std::endl; | ||
| 379 | + log.header1("Publish model cube"); | ||
| 380 | + } | ||
| 381 | + | ||
| 382 | + // Set default name is user name is empty | ||
| 383 | + std::string user_name(name); | ||
| 384 | + if (user_name.empty()) { | ||
| 385 | + user_name = CTMODEL_NAME; | ||
| 386 | + } | ||
| 387 | + | ||
| 388 | + // Log filename | ||
| 389 | + if (logTerse()) { | ||
| 390 | + log << "Publish \""+user_name+"\" model cube." << std::endl; | ||
| 391 | + } | ||
| 392 | + | ||
| 393 | + // Publish model cube | ||
| 394 | + m_cube.map().publish(user_name); | ||
| 395 | + | ||
| 396 | + // Return | ||
| 397 | + return; | ||
| 398 | +} | ||
| 399 | + | ||
| 400 | + | ||
| 401 | +/***********************************************************************//** | ||
| 368 | * @brief Set model cube | 402 | * @brief Set model cube |
| 369 | * | 403 | * |
| 370 | * @param[in] cube Model cube. | 404 | * @param[in] cube Model cube. |
| @@ -403,6 +437,7 @@ void ctmodel::init_members(void) | @@ -403,6 +437,7 @@ void ctmodel::init_members(void) | ||
| 403 | // Initialise members | 437 | // Initialise members |
| 404 | m_outcube.clear(); | 438 | m_outcube.clear(); |
| 405 | m_apply_edisp = false; | 439 | m_apply_edisp = false; |
| 440 | + m_publish = false; | ||
| 406 | 441 | ||
| 407 | // Initialise protected members | 442 | // Initialise protected members |
| 408 | m_obs.clear(); | 443 | m_obs.clear(); |
| @@ -427,6 +462,7 @@ void ctmodel::copy_members(const ctmodel& app) | @@ -427,6 +462,7 @@ void ctmodel::copy_members(const ctmodel& app) | ||
| 427 | // Copy attributes | 462 | // Copy attributes |
| 428 | m_outcube = app.m_outcube; | 463 | m_outcube = app.m_outcube; |
| 429 | m_apply_edisp = app.m_apply_edisp; | 464 | m_apply_edisp = app.m_apply_edisp; |
| 465 | + m_publish = app.m_publish; | ||
| 430 | 466 | ||
| 431 | // Copy protected members | 467 | // Copy protected members |
| 432 | m_obs = app.m_obs; | 468 | m_obs = app.m_obs; |
| @@ -550,6 +586,9 @@ void ctmodel::get_parameters(void) | @@ -550,6 +586,9 @@ void ctmodel::get_parameters(void) | ||
| 550 | 586 | ||
| 551 | } // endif: we had no cube yet | 587 | } // endif: we had no cube yet |
| 552 | 588 | ||
| 589 | + // Get remaining parameters | ||
| 590 | + m_publish = (*this)["publish"].boolean(); | ||
| 591 | + | ||
| 553 | // Read optionally output cube filenames | 592 | // Read optionally output cube filenames |
| 554 | if (read_ahead()) { | 593 | if (read_ahead()) { |
| 555 | m_outcube = (*this)["outcube"].filename(); | 594 | m_outcube = (*this)["outcube"].filename(); |
src/ctmodel/ctmodel.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctmodel - Model cube generation tool * | 2 | * ctmodel - Model cube generation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2012-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2012-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTMODEL_NAME "ctmodel" | 36 | #define CTMODEL_NAME "ctmodel" |
| 37 | -#define CTMODEL_VERSION "1.0.1" | 37 | +#define CTMODEL_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -68,6 +68,7 @@ public: | @@ -68,6 +68,7 @@ public: | ||
| 68 | void clear(void); | 68 | void clear(void); |
| 69 | void run(void); | 69 | void run(void); |
| 70 | void save(void); | 70 | void save(void); |
| 71 | + void publish(const std::string& name = ""); | ||
| 71 | const GObservations& obs(void) const; | 72 | const GObservations& obs(void) const; |
| 72 | const GCTAEventCube& cube(void) const; | 73 | const GCTAEventCube& cube(void) const; |
| 73 | void cube(const GCTAEventCube& cube); | 74 | void cube(const GCTAEventCube& cube); |
| @@ -84,8 +85,9 @@ protected: | @@ -84,8 +85,9 @@ protected: | ||
| 84 | bool has_cube(void) const; | 85 | bool has_cube(void) const; |
| 85 | 86 | ||
| 86 | // User parameters | 87 | // User parameters |
| 87 | - std::string m_outcube; //!< Output model cube | ||
| 88 | - bool m_apply_edisp; //!< Apply energy dispersion? | 88 | + GFilename m_outcube; //!< Output model cube |
| 89 | + bool m_apply_edisp; //!< Apply energy dispersion? | ||
| 90 | + bool m_publish; //!< Publish model cube? | ||
| 89 | 91 | ||
| 90 | // Protected members | 92 | // Protected members |
| 91 | GObservations m_obs; //!< Observation container | 93 | GObservations m_obs; //!< Observation container |
src/ctmodel/ctmodel.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctmodel.par # | 7 | # File: ctmodel.par # |
| 8 | -# Version: 1.0.1 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Juergen Knoedlseder # | 10 | # Author: Juergen Knoedlseder # |
| 11 | # Jurgen.Knodlseder@irap.omp.eu # | 11 | # Jurgen.Knodlseder@irap.omp.eu # |
| @@ -62,6 +62,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | @@ -62,6 +62,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 62 | # | 62 | # |
| 63 | # Standard parameters | 63 | # Standard parameters |
| 64 | #==================== | 64 | #==================== |
| 65 | +publish, b, h, no,,, "Publish model cube on VO Hub?" | ||
| 65 | chatter, i, h, 2,0,4, "Chattiness of output" | 66 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 66 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 67 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 67 | debug, b, h, no,,, "Debugging mode activated" | 68 | debug, b, h, no,,, "Debugging mode activated" |
src/ctskymap/ctskymap.cpp
| @@ -290,15 +290,21 @@ void ctskymap::run(void) | @@ -290,15 +290,21 @@ void ctskymap::run(void) | ||
| 290 | 290 | ||
| 291 | } // endfor: looped over observations | 291 | } // endfor: looped over observations |
| 292 | 292 | ||
| 293 | + // Optionally publish sky map | ||
| 294 | + if (m_publish) { | ||
| 295 | + publish(); | ||
| 296 | + } | ||
| 297 | + | ||
| 293 | // Return | 298 | // Return |
| 294 | return; | 299 | return; |
| 295 | } | 300 | } |
| 296 | 301 | ||
| 297 | 302 | ||
| 298 | /***********************************************************************//** | 303 | /***********************************************************************//** |
| 299 | - * @brief Save observation | 304 | + * @brief Save sky map |
| 300 | * | 305 | * |
| 301 | - * This method saves the counts map(s) into (a) FITS file(s). | 306 | + * Saves the sky map into a FITS file. The FITS file name is specified by the |
| 307 | + * @p outname parameter. | ||
| 302 | ***************************************************************************/ | 308 | ***************************************************************************/ |
| 303 | void ctskymap::save(void) | 309 | void ctskymap::save(void) |
| 304 | { | 310 | { |
| @@ -308,15 +314,12 @@ void ctskymap::save(void) | @@ -308,15 +314,12 @@ void ctskymap::save(void) | ||
| 308 | log.header1("Save sky map"); | 314 | log.header1("Save sky map"); |
| 309 | } | 315 | } |
| 310 | 316 | ||
| 311 | - // Get output filename | ||
| 312 | - m_outmap = (*this)["outmap"].filename(); | ||
| 313 | - | ||
| 314 | // Save only if filename is non-empty | 317 | // Save only if filename is non-empty |
| 315 | - if (m_outmap.length() > 0) { | 318 | + if (!m_outmap.is_empty()) { |
| 316 | 319 | ||
| 317 | - // Dump filename | 320 | + // Log filename |
| 318 | if (logTerse()) { | 321 | if (logTerse()) { |
| 319 | - log << "Save \""+m_outmap+"\"" << std::endl; | 322 | + log << "Save \""+m_outmap+"\"." << std::endl; |
| 320 | } | 323 | } |
| 321 | 324 | ||
| 322 | // Save sky map | 325 | // Save sky map |
| @@ -330,6 +333,38 @@ void ctskymap::save(void) | @@ -330,6 +333,38 @@ void ctskymap::save(void) | ||
| 330 | 333 | ||
| 331 | 334 | ||
| 332 | /***********************************************************************//** | 335 | /***********************************************************************//** |
| 336 | + * @brief Publish sky map | ||
| 337 | + * | ||
| 338 | + * @param[in] name Sky map name. | ||
| 339 | + ***************************************************************************/ | ||
| 340 | +void ctskymap::publish(const std::string& name) | ||
| 341 | +{ | ||
| 342 | + // Write header | ||
| 343 | + if (logTerse()) { | ||
| 344 | + log << std::endl; | ||
| 345 | + log.header1("Publish sky map"); | ||
| 346 | + } | ||
| 347 | + | ||
| 348 | + // Set default name is user name is empty | ||
| 349 | + std::string user_name(name); | ||
| 350 | + if (user_name.empty()) { | ||
| 351 | + user_name = CTSKYMAP_NAME; | ||
| 352 | + } | ||
| 353 | + | ||
| 354 | + // Log filename | ||
| 355 | + if (logTerse()) { | ||
| 356 | + log << "Publish \""+user_name+"\" sky map." << std::endl; | ||
| 357 | + } | ||
| 358 | + | ||
| 359 | + // Publish sky map | ||
| 360 | + m_skymap.publish(user_name); | ||
| 361 | + | ||
| 362 | + // Return | ||
| 363 | + return; | ||
| 364 | +} | ||
| 365 | + | ||
| 366 | + | ||
| 367 | +/***********************************************************************//** | ||
| 333 | * @brief Get application parameters | 368 | * @brief Get application parameters |
| 334 | * | 369 | * |
| 335 | * Get all task parameters from parameter file or (if required) by querying | 370 | * Get all task parameters from parameter file or (if required) by querying |
| @@ -359,12 +394,13 @@ void ctskymap::get_parameters(void) | @@ -359,12 +394,13 @@ void ctskymap::get_parameters(void) | ||
| 359 | m_skymap = create_map(m_obs); | 394 | m_skymap = create_map(m_obs); |
| 360 | 395 | ||
| 361 | // Get remaining parameters | 396 | // Get remaining parameters |
| 362 | - m_emin = (*this)["emin"].real(); | ||
| 363 | - m_emax = (*this)["emax"].real(); | 397 | + m_emin = (*this)["emin"].real(); |
| 398 | + m_emax = (*this)["emax"].real(); | ||
| 399 | + m_publish = (*this)["publish"].boolean(); | ||
| 364 | 400 | ||
| 365 | // Read ahead parameters | 401 | // Read ahead parameters |
| 366 | if (read_ahead()) { | 402 | if (read_ahead()) { |
| 367 | - m_outmap = (*this)["outmap"].filename(); | 403 | + m_outmap = (*this)["outmap"].filename(); |
| 368 | } | 404 | } |
| 369 | 405 | ||
| 370 | // Return | 406 | // Return |
| @@ -478,8 +514,9 @@ void ctskymap::init_members(void) | @@ -478,8 +514,9 @@ void ctskymap::init_members(void) | ||
| 478 | // Initialise members | 514 | // Initialise members |
| 479 | m_obs.clear(); | 515 | m_obs.clear(); |
| 480 | m_skymap.clear(); | 516 | m_skymap.clear(); |
| 481 | - m_emin = 0.0; | ||
| 482 | - m_emax = 0.0; | 517 | + m_emin = 0.0; |
| 518 | + m_emax = 0.0; | ||
| 519 | + m_publish = false; | ||
| 483 | 520 | ||
| 484 | // Return | 521 | // Return |
| 485 | return; | 522 | return; |
| @@ -494,10 +531,11 @@ void ctskymap::init_members(void) | @@ -494,10 +531,11 @@ void ctskymap::init_members(void) | ||
| 494 | void ctskymap::copy_members(const ctskymap& app) | 531 | void ctskymap::copy_members(const ctskymap& app) |
| 495 | { | 532 | { |
| 496 | // Copy attributes | 533 | // Copy attributes |
| 497 | - m_obs = app.m_obs; | ||
| 498 | - m_skymap = app.m_skymap; | ||
| 499 | - m_emin = app.m_emin; | ||
| 500 | - m_emax = app.m_emax; | 534 | + m_obs = app.m_obs; |
| 535 | + m_skymap = app.m_skymap; | ||
| 536 | + m_emin = app.m_emin; | ||
| 537 | + m_emax = app.m_emax; | ||
| 538 | + m_publish = app.m_publish; | ||
| 501 | 539 | ||
| 502 | // Return | 540 | // Return |
| 503 | return; | 541 | return; |
src/ctskymap/ctskymap.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * ctskymap - Sky mapping tool * | 2 | * ctskymap - Sky mapping tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2015 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2016 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTSKYMAP_NAME "ctskymap" | 36 | #define CTSKYMAP_NAME "ctskymap" |
| 37 | -#define CTSKYMAP_VERSION "1.0.0" | 37 | +#define CTSKYMAP_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -61,6 +61,7 @@ public: | @@ -61,6 +61,7 @@ public: | ||
| 61 | void clear(void); | 61 | void clear(void); |
| 62 | void run(void); | 62 | void run(void); |
| 63 | void save(void); | 63 | void save(void); |
| 64 | + void publish(const std::string& name = ""); | ||
| 64 | const GSkyMap& map(void) const; | 65 | const GSkyMap& map(void) const; |
| 65 | 66 | ||
| 66 | protected: | 67 | protected: |
| @@ -72,10 +73,10 @@ protected: | @@ -72,10 +73,10 @@ protected: | ||
| 72 | void map_events(GCTAObservation* obs); | 73 | void map_events(GCTAObservation* obs); |
| 73 | 74 | ||
| 74 | // User parameters | 75 | // User parameters |
| 75 | - std::string m_outmap; //!< Output counts map | 76 | + GFilename m_outmap; //!< Output file name |
| 76 | double m_emin; //!< Minimum energy (TeV) | 77 | double m_emin; //!< Minimum energy (TeV) |
| 77 | double m_emax; //!< Maximum energy (TeV) | 78 | double m_emax; //!< Maximum energy (TeV) |
| 78 | - | 79 | + bool m_publish; //!< Publish sky map? |
| 79 | 80 | ||
| 80 | // Protected members | 81 | // Protected members |
| 81 | GObservations m_obs; //!< Observation container | 82 | GObservations m_obs; //!< Observation container |
src/ctskymap/ctskymap.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: ctskymap.par # | 7 | # File: ctskymap.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Jurgen Knodlseder # | 10 | # Author: Jurgen Knodlseder # |
| 11 | # knodlseder@cesr.fr # | 11 | # knodlseder@cesr.fr # |
| @@ -41,6 +41,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | @@ -41,6 +41,7 @@ proj, s, a, "CAR", AIT|AZP|CAR|MER|MOL|STG|TAN,, "Projection method" | ||
| 41 | # | 41 | # |
| 42 | # Standard parameters | 42 | # Standard parameters |
| 43 | #==================== | 43 | #==================== |
| 44 | +publish, b, h, no,,, "Publish sky map on VO Hub?" | ||
| 44 | chatter, i, h, 2,0,4, "Chattiness of output" | 45 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 45 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 46 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 46 | debug, b, h, no,,, "Debugging mode activated" | 47 | debug, b, h, no,,, "Debugging mode activated" |
src/cttsmap/cttsmap.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * cttsmap - TS map calculation tool * | 2 | * cttsmap - TS map calculation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Michael Mayer * | 4 | + * copyright (C) 2014-2016 by Michael Mayer * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -368,6 +368,11 @@ void cttsmap::run(void) | @@ -368,6 +368,11 @@ void cttsmap::run(void) | ||
| 368 | } | 368 | } |
| 369 | } | 369 | } |
| 370 | 370 | ||
| 371 | + // Optionally publish TS map | ||
| 372 | + if (m_publish) { | ||
| 373 | + publish(); | ||
| 374 | + } | ||
| 375 | + | ||
| 371 | // Return | 376 | // Return |
| 372 | return; | 377 | return; |
| 373 | } | 378 | } |
| @@ -386,31 +391,60 @@ void cttsmap::save(void) | @@ -386,31 +391,60 @@ void cttsmap::save(void) | ||
| 386 | log.header1("Save TS map"); | 391 | log.header1("Save TS map"); |
| 387 | } | 392 | } |
| 388 | 393 | ||
| 389 | - // Get output filename | ||
| 390 | - m_outmap = (*this)["outmap"].filename(); | ||
| 391 | - | ||
| 392 | - // Create fits file instance | ||
| 393 | - GFits fitsfile = GFits(); | 394 | + // Create fits file |
| 395 | + GFits fits; | ||
| 394 | 396 | ||
| 395 | // Write the sky maps to the FITS file | 397 | // Write the sky maps to the FITS file |
| 396 | - m_tsmap.write(fitsfile); | 398 | + m_tsmap.write(fits); |
| 397 | for (int i = 0; i < m_mapnames.size(); i++) { | 399 | for (int i = 0; i < m_mapnames.size(); i++) { |
| 398 | - m_maps[i].write(fitsfile); | 400 | + m_maps[i].write(fits); |
| 399 | } | 401 | } |
| 400 | 402 | ||
| 401 | // Set extension name for all maps | 403 | // Set extension name for all maps |
| 402 | for (int i = 0; i < m_mapnames.size(); i++) { | 404 | for (int i = 0; i < m_mapnames.size(); i++) { |
| 403 | - fitsfile[i+1]->extname(m_mapnames[i]); | 405 | + fits[i+1]->extname(m_mapnames[i]); |
| 404 | } | 406 | } |
| 405 | 407 | ||
| 406 | // Add computation log if not all bins are computed | 408 | // Add computation log if not all bins are computed |
| 407 | if (m_binmin != -1 || m_binmax != -1) { | 409 | if (m_binmin != -1 || m_binmax != -1) { |
| 408 | - m_statusmap.write(fitsfile); | ||
| 409 | - fitsfile[m_mapnames.size()+1]->extname("STATUS MAP"); | 410 | + m_statusmap.write(fits); |
| 411 | + fits[m_mapnames.size()+1]->extname("STATUS MAP"); | ||
| 410 | } | 412 | } |
| 411 | 413 | ||
| 412 | // Save FITS file | 414 | // Save FITS file |
| 413 | - fitsfile.saveto(m_outmap,true); | 415 | + fits.saveto(m_outmap, clobber()); |
| 416 | + | ||
| 417 | + // Return | ||
| 418 | + return; | ||
| 419 | +} | ||
| 420 | + | ||
| 421 | + | ||
| 422 | +/***********************************************************************//** | ||
| 423 | + * @brief Publish TS map | ||
| 424 | + * | ||
| 425 | + * @param[in] name TS map name. | ||
| 426 | + ***************************************************************************/ | ||
| 427 | +void cttsmap::publish(const std::string& name) | ||
| 428 | +{ | ||
| 429 | + // Write header | ||
| 430 | + if (logTerse()) { | ||
| 431 | + log << std::endl; | ||
| 432 | + log.header1("Publish TS map"); | ||
| 433 | + } | ||
| 434 | + | ||
| 435 | + // Set default name is user name is empty | ||
| 436 | + std::string user_name(name); | ||
| 437 | + if (user_name.empty()) { | ||
| 438 | + user_name = CTTSMAP_NAME; | ||
| 439 | + } | ||
| 440 | + | ||
| 441 | + // Log filename | ||
| 442 | + if (logTerse()) { | ||
| 443 | + log << "Publish \""+user_name+"\" TS map." << std::endl; | ||
| 444 | + } | ||
| 445 | + | ||
| 446 | + // Publish TS map | ||
| 447 | + m_tsmap.publish(user_name); | ||
| 414 | 448 | ||
| 415 | // Return | 449 | // Return |
| 416 | return; | 450 | return; |
| @@ -432,6 +466,7 @@ void cttsmap::init_members(void) | @@ -432,6 +466,7 @@ void cttsmap::init_members(void) | ||
| 432 | m_srcname.clear(); | 466 | m_srcname.clear(); |
| 433 | m_outmap.clear(); | 467 | m_outmap.clear(); |
| 434 | m_apply_edisp = false; | 468 | m_apply_edisp = false; |
| 469 | + m_publish = false; | ||
| 435 | 470 | ||
| 436 | // Initialise protected members | 471 | // Initialise protected members |
| 437 | m_obs.clear(); | 472 | m_obs.clear(); |
| @@ -457,9 +492,10 @@ void cttsmap::init_members(void) | @@ -457,9 +492,10 @@ void cttsmap::init_members(void) | ||
| 457 | void cttsmap::copy_members(const cttsmap& app) | 492 | void cttsmap::copy_members(const cttsmap& app) |
| 458 | { | 493 | { |
| 459 | // Copy attributes | 494 | // Copy attributes |
| 460 | - m_srcname = app.m_srcname; | ||
| 461 | - m_outmap = app.m_outmap; | 495 | + m_srcname = app.m_srcname; |
| 496 | + m_outmap = app.m_outmap; | ||
| 462 | m_apply_edisp = app.m_apply_edisp; | 497 | m_apply_edisp = app.m_apply_edisp; |
| 498 | + m_publish = app.m_publish; | ||
| 463 | 499 | ||
| 464 | // Copy protected members | 500 | // Copy protected members |
| 465 | m_binmin = app.m_binmin; | 501 | m_binmin = app.m_binmin; |
| @@ -568,9 +604,10 @@ void cttsmap::get_parameters(void) | @@ -568,9 +604,10 @@ void cttsmap::get_parameters(void) | ||
| 568 | m_apply_edisp = (*this)["edisp"].boolean(); | 604 | m_apply_edisp = (*this)["edisp"].boolean(); |
| 569 | 605 | ||
| 570 | // Get optional splitting parameters | 606 | // Get optional splitting parameters |
| 571 | - m_binmin = (*this)["binmin"].integer(); | ||
| 572 | - m_binmax = (*this)["binmax"].integer(); | ||
| 573 | - m_logL0 = (*this)["logL0"].real(); | 607 | + m_binmin = (*this)["binmin"].integer(); |
| 608 | + m_binmax = (*this)["binmax"].integer(); | ||
| 609 | + m_logL0 = (*this)["logL0"].real(); | ||
| 610 | + m_publish = (*this)["publish"].boolean(); | ||
| 574 | 611 | ||
| 575 | // Optionally read ahead parameters so that they get correctly | 612 | // Optionally read ahead parameters so that they get correctly |
| 576 | // dumped into the log file | 613 | // dumped into the log file |
src/cttsmap/cttsmap.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * cttsmap - TS map calculation tool * | 2 | * cttsmap - TS map calculation tool * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2014-2015 by Michael Mayer * | 4 | + * copyright (C) 2014-2016 by Michael Mayer * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | 34 | ||
| 35 | /* __Definitions _________________________________________________________ */ | 35 | /* __Definitions _________________________________________________________ */ |
| 36 | #define CTTSMAP_NAME "cttsmap" | 36 | #define CTTSMAP_NAME "cttsmap" |
| 37 | -#define CTTSMAP_VERSION "1.0.0" | 37 | +#define CTTSMAP_VERSION "1.1.0" |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | /***********************************************************************//** | 40 | /***********************************************************************//** |
| @@ -72,6 +72,7 @@ public: | @@ -72,6 +72,7 @@ public: | ||
| 72 | void clear(void); | 72 | void clear(void); |
| 73 | void run(void); | 73 | void run(void); |
| 74 | void save(void); | 74 | void save(void); |
| 75 | + void publish(const std::string& name = ""); | ||
| 75 | const GObservations& obs(void) const; | 76 | const GObservations& obs(void) const; |
| 76 | const GSkyMap& tsmap(void) const; | 77 | const GSkyMap& tsmap(void) const; |
| 77 | 78 | ||
| @@ -85,8 +86,9 @@ protected: | @@ -85,8 +86,9 @@ protected: | ||
| 85 | 86 | ||
| 86 | // User parameters | 87 | // User parameters |
| 87 | std::string m_srcname; //!< Name of source which is moved around | 88 | std::string m_srcname; //!< Name of source which is moved around |
| 88 | - std::string m_outmap; //!< Output counts map or XML file | 89 | + GFilename m_outmap; //!< Output TS map file name |
| 89 | bool m_apply_edisp; //!< Apply energy dispersion? | 90 | bool m_apply_edisp; //!< Apply energy dispersion? |
| 91 | + bool m_publish; //!< Publish TS map? | ||
| 90 | 92 | ||
| 91 | // Parameters to control speed and job splitting | 93 | // Parameters to control speed and job splitting |
| 92 | int m_binmin; //!< Map bin number from which computation should start | 94 | int m_binmin; //!< Map bin number from which computation should start |
src/cttsmap/cttsmap.par
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | # ------------------------------------------------------------------------- # | 5 | # ------------------------------------------------------------------------- # |
| 6 | # # | 6 | # # |
| 7 | # File: cttsmap.par # | 7 | # File: cttsmap.par # |
| 8 | -# Version: 1.0.0 # | 8 | +# Version: 1.1.0 # |
| 9 | # # | 9 | # # |
| 10 | # Author: Michael Mayer # | 10 | # Author: Michael Mayer # |
| 11 | # michael.mayer@desy.de # | 11 | # michael.mayer@desy.de # |
| @@ -50,6 +50,7 @@ logL0, r, h, 0.0,,, "LogLikelihood value of null hypothesis" | @@ -50,6 +50,7 @@ logL0, r, h, 0.0,,, "LogLikelihood value of null hypothesis" | ||
| 50 | # | 50 | # |
| 51 | # Standard parameters | 51 | # Standard parameters |
| 52 | #==================== | 52 | #==================== |
| 53 | +publish, b, h, no,,, "Publish Test Statistic map on VO Hub?" | ||
| 53 | chatter, i, h, 2,0,4, "Chattiness of output" | 54 | chatter, i, h, 2,0,4, "Chattiness of output" |
| 54 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | 55 | clobber, b, h, yes,,, "Overwrite existing output files with new output files?" |
| 55 | debug, b, h, no,,, "Debugging mode activated" | 56 | debug, b, h, no,,, "Debugging mode activated" |