]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/PHOS/AliHLTPHOSMonitorTriggerComponent.cxx
fix bug in calculation of signals and npads for clusters
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSMonitorTriggerComponent.cxx
index e1772c28b846e14b47b7a20667536d4a5f582bb7..cd531a17af2bfdc2ae87e74edaeaab41d665ecca 100644 (file)
@@ -1,3 +1,5 @@
+// $Id$
+
  /**************************************************************************
  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
  **************************************************************************/
 
 #include <iostream>
-
+#include "AliHLTPHOSDefinitions.h" // PTH
 #include "AliHLTPHOSMonitorTriggerComponent.h"
-#include "AliHLTPHOSCaloClusterContainerStruct.h"
-#include "AliHLTPHOSCaloClusterDataStruct.h"
+#include "AliHLTCaloClusterDataStruct.h"
 #include "AliHLTDataTypes.h"
 
 /** @file   AliHLTPHOSMonitorTriggerComponent.h
@@ -44,14 +45,16 @@ AliHLTPHOSMonitorTriggerComponent gAliHLTPHOSMonitorTriggerComponent;
 
 
 AliHLTPHOSMonitorTriggerComponent::AliHLTPHOSMonitorTriggerComponent(): 
-  AliHLTPHOSProcessor(), 
+  AliHLTCaloProcessor(), 
   fCheckClusterEnergy(false),
   fCheckClusterMultiplicities(false),
   fClusterEnergyThreshold(1),
   fMultiplicityThreshold(5),
   fMultEnergyThreshold(0.5),
   fDigitMultiplicityThreshold(16),
-  fMultDigitMultiplicityThreshold(9)
+  fMultDigitMultiplicityThreshold(9),
+  fLowerCentrality(0.5),
+  fUpperCentrality(0.9)
 {
   //See headerfile for documentation
 }
@@ -107,7 +110,7 @@ AliHLTPHOSMonitorTriggerComponent::GetOutputDataSize(unsigned long& constBase, d
 int
 AliHLTPHOSMonitorTriggerComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
                                           AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* /*outputPtr*/, AliHLTUInt32_t& /*size*/,
-                                          std::vector<AliHLTComponentBlockData>& /*outputBlocks*/)
+                                        std::vector<AliHLTComponentBlockData>& /*outputBlocks*/)
 {
   //See headerfile for documentation
 
@@ -127,7 +130,7 @@ AliHLTPHOSMonitorTriggerComponent::DoEvent(const AliHLTComponentEventData& evtDa
        }
       specification |= iter->fSpecification;
 
-      monitorflag += CheckClusters(reinterpret_cast<AliHLTPHOSCaloClusterContainerStruct*>(iter->fPtr));
+      monitorflag += CheckClusters(reinterpret_cast<AliHLTCaloClusterHeaderStruct*>(iter->fPtr));
        
     }
 
@@ -146,7 +149,7 @@ AliHLTPHOSMonitorTriggerComponent::DoEvent(const AliHLTComponentEventData& evtDa
          eddWord = blockCount;
          PushEventDoneData( eddWord );
          
-         //      Int_t blockIndex = 0;
+         //Int_t blockIndex = 0;
          // low data type
          eddWord = 0;
         
@@ -185,21 +188,27 @@ AliHLTPHOSMonitorTriggerComponent::DoEvent(const AliHLTComponentEventData& evtDa
 }
 
 Bool_t
-AliHLTPHOSMonitorTriggerComponent::CheckClusters(AliHLTPHOSCaloClusterContainerStruct* clusterContainer)
+AliHLTPHOSMonitorTriggerComponent::CheckClusters(AliHLTCaloClusterHeaderStruct* clusterHeaderPtr)
 {
   //See headerfile for documentation
+  
+  UInt_t nClusters = clusterHeaderPtr->fNClusters;
+//  Float_t* ampFracPtr = 0;
 
-  Int_t nClusters = 0;
-
-  AliHLTPHOSCaloClusterDataStruct* clusterPtr = 0;
+  AliHLTCaloClusterDataStruct* clusterPtr = 0;
 
+  clusterPtr = reinterpret_cast<AliHLTCaloClusterDataStruct*>(clusterHeaderPtr + sizeof(AliHLTCaloClusterHeaderStruct));
       
-  for(UInt_t n = 0; n < clusterContainer->fNCaloClusters; n++)
+  for(UInt_t n = 0; n < nClusters; n++)
     {
-      clusterPtr = &(clusterContainer->fCaloClusterArray[n]);
       if(fCheckClusterEnergy == true && clusterPtr->fEnergy > fClusterEnergyThreshold && clusterPtr->fNCells > fDigitMultiplicityThreshold)
        {
-         return true;
+/*       ampFracPtr = &(clusterPtr->fCellsAmpFraction);
+         for(UInt_t i = 0; i < clusterPtr->fNCells; i++)
+           {
+             if(*ampFracPtr > fLowerCentrality && *ampFracPtr < fUpperCentrality) return true;
+             ampFracPtr += 6; // 6 = sizeof(Short_t) + sizeof(Float_t)
+           }*/
        }
       if(fCheckClusterMultiplicities == true && clusterPtr->fEnergy > fMultEnergyThreshold && clusterPtr->fNCells > fMultDigitMultiplicityThreshold)
        {
@@ -209,6 +218,7 @@ AliHLTPHOSMonitorTriggerComponent::CheckClusters(AliHLTPHOSCaloClusterContainerS
              return true;
            }
        }
+      clusterPtr += sizeof(AliHLTCaloClusterDataStruct) + 5*clusterPtr->fNCells; //5 = sizeof(Short_t) + sizeof(Float_t) - 1(pair already included)
     }
 
   return false;
@@ -221,7 +231,6 @@ AliHLTPHOSMonitorTriggerComponent::DoInit(int argc, const char** argv )
 {
   //See headerfile for documentation
 
-
   for (int i = 0; i < argc; i++)
     {
       if(!strcmp("-checkenergy", argv[i]))
@@ -237,12 +246,24 @@ AliHLTPHOSMonitorTriggerComponent::DoInit(int argc, const char** argv )
          fClusterEnergyThreshold = atof(argv[i+1]);
          fCheckClusterEnergy = true;
        }
+      if(!strcmp("-multiplicityinclusterE", argv[i]))
+       {
+         fDigitMultiplicityThreshold = atoi(argv[i+1]);
+       }
       if(!strcmp("-multiplicitythreshold", argv[i]))
        {
          fMultiplicityThreshold = atoi(argv[i+1]);
          fCheckClusterMultiplicities = true;
        }
-      
+      if(!strcmp("-multiplicityinclusterMult", argv[i]))
+       {
+         fMultDigitMultiplicityThreshold = atoi(argv[i+1]);
+       }
+      if(!strcmp("-centralitylimits", argv[i]))
+       {
+         fLowerCentrality = atof(argv[i+1]);
+         fUpperCentrality = atof(argv[i+2]);
+       } 
     }
   return 0;
 }