Add output of VZERO reco directly to multCorr
[u/mrichter/AliRoot.git] / HLT / global / physics / AliHLTMultiplicityCorrelationsComponent.cxx
index eb9b52a7ebb858d5eda8182f7bb498c7ed1eca15..77c6b3c46130796987bc943591382f7c4ab5a61e 100644 (file)
@@ -27,13 +27,14 @@ using namespace std;
 
 #include "TMap.h"
 #include "TObjString.h"
-
+#include "AliESDVZERO.h"
 #include "AliESDtrackCuts.h"
 #include "AliHLTMultiplicityCorrelations.h"
 
 #include "AliHLTErrorGuard.h"
 #include "AliHLTDataTypes.h"
 #include "AliHLTMultiplicityCorrelationsComponent.h"
+#include "AliHLTITSClusterDataFormat.h"
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTMultiplicityCorrelationsComponent)
@@ -83,6 +84,8 @@ const Char_t* AliHLTMultiplicityCorrelationsComponent::GetComponentID() {
 void AliHLTMultiplicityCorrelationsComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list) {
   // see header file for class documentation
   list.push_back(kAliHLTDataTypeESDObject|kAliHLTDataOriginAny);
+  list.push_back(kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD);
+  list.push_back(kAliHLTDataTypeESDContent|kAliHLTDataOriginVZERO);
 }
 
 // #################################################################################
@@ -378,6 +381,22 @@ Int_t AliHLTMultiplicityCorrelationsComponent::ScanConfigurationArgument(Int_t a
     return 4;
   }
 
+  // binningSpd
+  if (argument.CompareTo("-binningSpd")==0) {
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Int_t binning = argument.Atoi();
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Float_t min = argument.Atof();
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Float_t max = argument.Atof();
+
+    fCorrObj->SetBinningSpd(binning, min, max);
+    return 4;
+  }
+
   // binningZdc
   if (argument.CompareTo("-binningZdc")==0) {
     if (++ii>=argc) return -EPROTO;
@@ -425,7 +444,35 @@ Int_t AliHLTMultiplicityCorrelationsComponent::ScanConfigurationArgument(Int_t a
     fCorrObj->SetBinningZem(binning, min, max);
     return 4;
   }
+  // binningZem
+  if (argument.CompareTo("-binningCalo")==0) {
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Int_t binning = argument.Atoi();
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Float_t min = argument.Atof();
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Float_t max = argument.Atof();
 
+    fCorrObj->SetBinningCalo(binning, min, max);
+    return 4;
+  }
+  if (argument.CompareTo("-enablePhos")==0) {
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Int_t enabled = argument.Atoi();
+    fCorrObj->SetProcessPhos(enabled);
+    return 2;
+  }
+  if (argument.CompareTo("-enableEmcal")==0) {
+    if (++ii>=argc) return -EPROTO;
+    argument=argv[ii];
+    Int_t enabled = argument.Atoi();
+    fCorrObj->SetProcessEmcal(enabled);
+    return 2;
+  }
   // unknown argument
   return -EINVAL;
 }
@@ -456,19 +503,49 @@ Int_t AliHLTMultiplicityCorrelationsComponent::DoEvent(const AliHLTComponentEven
   if (!IsDataEvent()) 
     return 0;
 
+
   // -- Get ESD object 
+  AliESDEvent *esdEvent = NULL;
   for ( const TObject *iter = GetFirstInputObject(kAliHLTDataTypeESDObject); iter != NULL; iter = GetNextInputObject() ) {
-
-    AliESDEvent *esdEvent = dynamic_cast<AliESDEvent*>(const_cast<TObject*>( iter ) );
+    esdEvent = dynamic_cast<AliESDEvent*>(const_cast<TObject*>( iter ) );
     if( !esdEvent ){ 
       HLTWarning("Wrong ESDEvent object received");
       iResult = -1;
       continue;
     }
     esdEvent->GetStdContent();
-    iResult = fCorrObj->ProcessEvent(esdEvent);
   }
 
+  // -- Get VZEROESD object 
+  AliESDVZERO *esdVZERO = NULL;
+  for ( const TObject *iter = GetFirstInputObject(kAliHLTDataTypeESDContent|kAliHLTDataOriginVZERO); 
+       iter != NULL; iter = GetNextInputObject() ) {
+    esdVZERO = dynamic_cast<AliESDVZERO*>(const_cast<TObject*>( iter ) );
+    if( !esdVZERO ){ 
+      HLTWarning("Wrong VZERO ESDEvent object received");
+      iResult = -1;
+      continue;
+    }
+  }
+
+  // -- Get SPD clusters
+  // ---------------------
+  const AliHLTComponentBlockData* iter = NULL;
+  Int_t totalSpacePoint = 0;
+
+  for ( iter = GetFirstInputBlock(kAliHLTDataTypeClusters|kAliHLTDataOriginITSSPD); 
+       iter != NULL; iter = GetNextInputBlock() ) {
+    
+    const AliHLTITSClusterData* clusterData = (const AliHLTITSClusterData*) iter->fPtr;
+    Int_t nSpacepoint = (Int_t) clusterData->fSpacePointCnt;
+    totalSpacePoint += nSpacepoint;
+  }
+
+  // -- Process Event
+  // ------------------
+  if (esdEvent)
+    iResult = fCorrObj->ProcessEvent(esdEvent,esdVZERO,totalSpacePoint);
+
   if (iResult) {
     HLTError("Error while processing event inside multiplicity correlation object");
     return iResult;