diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp
index e75b6836a49bb797d005c4676358f9365db342a0..52a4a80255d9de4e2160c938315234956ee552e8 100644
--- a/src/utils/utils.cpp
+++ b/src/utils/utils.cpp
@@ -37,6 +37,24 @@ const QString Utils::getDatabaseName(ExternalDatabase database) {
 }
 
 
+std::vector<size_t> Utils::getHistogram(std::vector<pappso::pappso_double> data_values, unsigned int number_of_class) {
+
+
+    std::vector<size_t> histogram(number_of_class);
+    
+    std::sort(data_values.begin(), data_values.end());
+    pappso::pappso_double min = *data_values.begin();
+    pappso::pappso_double max = *(data_values.end()-1);
+    pappso::pappso_double offset = (max-min)/ (pappso::pappso_double) number_of_class;
+
+    for (pappso::pappso_double value :data_values) {
+        histogram[(value /offset )] = value;
+    }
+
+    return histogram;
+}
+
+
 pappso::AaModificationP Utils::guessAaModificationPbyMonoisotopicMassDelta(pappso::mz mass) {
     pappso::PrecisionP precision = pappso::Precision::getDaltonInstance(0.01);
 
diff --git a/src/utils/utils.h b/src/utils/utils.h
index 7f5c1ae5557ccab6ad8f4a44eed69c53400e324a..2c17e8f21aa4328e03454f1c5cb329c2a27227b5 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -35,6 +35,7 @@ public:
     static const QString getDatabaseName(ExternalDatabase database);
     static const QString getXmlDouble(pappso::pappso_double number);
     static pappso::AaModificationP guessAaModificationPbyMonoisotopicMassDelta(pappso::mz mass);
+    static std::vector<size_t> getHistogram(std::vector<pappso::pappso_double> data_values, unsigned int number_of_class);
 
 };