Index: fact/tools/rootmacros/PulseTemplates/pixel.C
===================================================================
--- fact/tools/rootmacros/PulseTemplates/pixel.C	(revision 13593)
+++ fact/tools/rootmacros/PulseTemplates/pixel.C	(revision 13594)
@@ -19,4 +19,5 @@
         )
 {
+    mConstructorType        = 1;
     mChid                   = pixelID;
     mStats                  = stats;
@@ -30,7 +31,12 @@
     hEdgeProfile = new TProfile*[mMaxPulseOrder];
 
+    hPixelMax  = new TH1F*[mMaxPulseOrder];
+    hPixelMedian = new TH1F*[mMaxPulseOrder];
+    hPixelMean  = new TH1F*[mMaxPulseOrder];
+
     hList           = new TObjArray;
 
     LoadPulseHistos( );
+    BookTemplateHistos();
 }
 
@@ -48,4 +54,5 @@
         )
 {
+    mConstructorType        = 0;
     mChid                   = pixelID;
     mStats                  = stats;        ///TODO: HANDOVER THE VALUE
@@ -90,6 +97,13 @@
 
     DeletePixelHistos();
-    DeleteDistributionHistos();
-
+    if (mConstructorType == 0)
+    {
+        DeleteDistributionHistos();
+    }
+
+    if (mConstructorType == 1)
+    {
+        DeleteTemplateHistos();
+    }
     delete hList;
     hList = NULL;
@@ -538,4 +552,123 @@
 }
 
+void
+Pixel::BookTemplateHistos()
+{
+    if (mVerbosityLevel > 2) cout << endl << "...book pixel histograms" << endl;
+    for (int order = 0; order < mMaxPulseOrder; order++)
+    {
+        if (mVerbosityLevel > 3) cout << "\t...booking " << HistoName("hPixelMax", order) << endl;
+        hPixelMax[order]=new TH1F(
+                    HistoName("hPixelMax", order),
+                    HistoTitle("Maximum value of each slice in overlay plot of", order),
+                    mPixelOverlayXaxisLeft + mPixelOverlayXaxisRight ,
+                    (-1*mPixelOverlayXaxisLeft)-0.5,
+                    mPixelOverlayXaxisRight-0.5
+                    );
+
+        hPixelMax[order]->SetAxisRange(
+                    mBSLMean - 5,
+                    (mGainMean*(order+1)) + 10,
+                    "Y");
+        hPixelMax[order]->GetXaxis()->SetTitle( "Timeslices [a.u.]" );
+        hPixelMax[order]->GetYaxis()->SetTitle( "Amplitude [mV]" );
+        //hMaxProfile->SetBit(TH2F::kCanRebin);
+        hPixelMax[order]->SetStats(mStats);
+        hList->Add( hPixelMax[order] );
+
+//------------------------------------------------------------------------
+
+        if (mVerbosityLevel > 3) cout << "\t...booking " << HistoName("hPixelMean", order) << endl;
+        hPixelMean[order] = new TH1F(
+                    HistoName("hPixelMean", order),
+                    HistoTitle("Mean value of each slice in overlay plot of", order),
+                    mPixelOverlayXaxisLeft + mPixelOverlayXaxisRight ,
+                    (-1*mPixelOverlayXaxisLeft)-0.5,
+                    mPixelOverlayXaxisRight-0.5
+                    );
+        hPixelMean[order]->SetLineColor(kBlue);
+        hPixelMean[order]->SetAxisRange(
+                    mBSLMean - 5,
+                    (mGainMean*(order+1)) + 10,
+                    "Y");
+        hPixelMean[order]->GetXaxis()->SetTitle( "Timeslices [a.u.]" );
+        hPixelMean[order]->GetYaxis()->SetTitle( "Amplitude [mV]" );
+        hPixelMean[order]->SetStats(mStats);
+        hList->Add( hPixelMean[order] );
+
+ //------------------------------------------------------------------------
+
+        if (mVerbosityLevel > 3) cout << "\t...booking " << HistoName("hPixelMedian", order) << endl;
+        hPixelMedian[order] = new TH1F(
+                    HistoName("hPixelMedian", order),
+                    HistoTitle("Median value of each slice in overlay plot of", order),
+                    mPixelOverlayXaxisLeft + mPixelOverlayXaxisRight ,//nbinsx
+                    (-1*mPixelOverlayXaxisLeft)-0.5,                 //xlow
+                    mPixelOverlayXaxisRight-0.5                     //xup
+                    );
+        hPixelMedian[order]->SetLineColor(kRed);
+        hPixelMedian[order]->SetAxisRange(
+                    mBSLMean - 5,
+                    (mGainMean*(order+1)) + 10,
+                    "Y");
+        hPixelMedian[order]->GetXaxis()->SetTitle( "Timeslices [a.u.]" );
+        hPixelMedian[order]->GetYaxis()->SetTitle( "Amplitude [mV]" );
+        //hMaxProfile->SetBit(TH2F::kCanRebin);
+        hPixelMedian[order]->SetStats(mStats);
+        hList->Add( hPixelMedian[order] );
+
+    }
+    if (mVerbosityLevel > 2) cout << "...done" << endl;
+}
+//end of BookTemplateHistos
+//----------------------------------------------------------------------------
+
+void
+Pixel::DeleteTemplateHistos()
+{
+    if (mVerbosityLevel > 2)
+    {
+        cout << endl
+             << "\t...delete current template histograms of Pixel# " << mChid;
+    }
+    for (int order = 0;
+         order < mMaxPulseOrder;
+         order ++)
+    {
+        if (mVerbosityLevel > 3)
+        cout << endl << "\t\t...deleting hPixelMax"
+                                      << mChid << "_" << order
+                                      << " hPixelMax[order] adr " << hPixelMax[order]
+                                      << " hPixelMax adr " << hPixelMax
+                                         ;
+
+        delete hPixelMax[order];
+        hPixelMax[order] = NULL;
+
+        if (mVerbosityLevel > 3) cout << endl << "\t\t...deleting hPixelMedian"
+                                      << mChid << "_" << order ;
+        delete hPixelMedian[order];
+        hPixelMedian[order] = NULL;
+
+        if (mVerbosityLevel > 3) cout << endl << "\t\t...deleting hPixelMean"
+                                      << mChid << "_" << order ;
+        delete hPixelMean[order];
+        hPixelMean[order] = NULL;
+
+    }
+    if (mVerbosityLevel > 3) cout << endl << "\t...deleting histogram Arrays";
+
+    if (mVerbosityLevel > 3) cout << endl << "\t\t...deleting hPixelMax";
+    delete[] hPixelMax;
+    hPixelMax = NULL;
+
+    if (mVerbosityLevel > 3) cout << endl << "\t\t...deleting hPixelMedian";
+    delete[] hPixelMedian;
+    hPixelMedian = NULL;
+
+    if (mVerbosityLevel > 3) cout << endl << "\t\t...deleting hPixelMean";
+    delete[] hPixelMean;
+    hPixelMean = NULL;
+}
 
 //============================= ACESS      ===================================
