Adding output data type of rootifier component to the constants class.
authoraszostak <aszostak@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 24 Sep 2008 11:19:30 +0000 (11:19 +0000)
committeraszostak <aszostak@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 24 Sep 2008 11:19:30 +0000 (11:19 +0000)
Also adding option to attach extra dHLT data objects to ESD (off by default).

HLT/MUON/AliHLTMUONConstants.cxx
HLT/MUON/AliHLTMUONConstants.h
HLT/MUON/OfflineInterface/AliHLTMUONESDMaker.cxx
HLT/MUON/OfflineInterface/AliHLTMUONESDMaker.h
HLT/MUON/OfflineInterface/AliHLTMUONRootifierComponent.cxx

index 328fa25..c273cfc 100644 (file)
@@ -127,6 +127,9 @@ const AliHLTComponentDataType
 AliHLTMUONConstants::fgkPairsDecisionBlockDataType = AliHLTComponentDataTypeInitializer("DECIDPAR", kAliHLTDataOriginMUON);
 
 const AliHLTComponentDataType
+AliHLTMUONConstants::fgkRootifiedEventDataType = AliHLTComponentDataTypeInitializer("ROOTEVNT", kAliHLTDataOriginMUON);
+
+const AliHLTComponentDataType
 AliHLTMUONConstants::fgkESDDataType = AliHLTComponentDataTypeInitializer(kAliHLTDataTypeESDObject.fID, kAliHLTDataOriginMUON);
 
 const AliHLTComponentDataType
index 36edd7e..40bbb62 100644 (file)
@@ -158,6 +158,11 @@ public:
                return fgkPairsDecisionBlockDataType;
        }
 
+       static const AliHLTComponentDataType& RootifiedEventDataType()
+       {
+               return fgkRootifiedEventDataType;
+       }
+
        static const AliHLTComponentDataType& ESDDataType()
        {
                return fgkESDDataType;
@@ -299,6 +304,7 @@ private:
        static const AliHLTComponentDataType fgkMansoCandidatesBlockDataType; // Debugging information about a track candidate generated by the Manso algorithm.
        static const AliHLTComponentDataType fgkSinglesDecisionBlockDataType; // Trigger decision block type for single track decisions.
        static const AliHLTComponentDataType fgkPairsDecisionBlockDataType; // Trigger decision block type for pairs of particles.
+       static const AliHLTComponentDataType fgkRootifiedEventDataType; // An AliHLTMUONEvent ROOT object.
        static const AliHLTComponentDataType fgkESDDataType; // The ESD data type with origin equal to MUON.
        static const AliHLTComponentDataType fgkClusterStoreDataType; // Offline algorithm cluster store object.
        static const AliHLTComponentDataType fgkHistogramDataType; // TH1/2/3 histogram type.
index e95d594..2ef9d65 100644 (file)
@@ -51,7 +51,8 @@ ClassImp(AliHLTMUONESDMaker);
 AliHLTMUONESDMaker::AliHLTMUONESDMaker() :
        AliHLTMUONProcessor(),
        fWarnForUnexpecedBlock(false),
-       fMakeMinimalESD(false)
+       fMakeMinimalESD(false),
+       fAddCustomData(false)
 {
        /// Default constructor.
 }
@@ -109,6 +110,12 @@ int AliHLTMUONESDMaker::DoInit(int argc, const char** argv)
                        fWarnForUnexpecedBlock = true;
                        continue;
                }
+               
+               if (strcmp(argv[i], "-add_rootified_objects") == 0)
+               {
+                       fAddCustomData = true;
+                       continue;
+               }
 
                HLTError("Unknown option '%s'.", argv[i]);
                return -EINVAL;
@@ -229,6 +236,10 @@ int AliHLTMUONESDMaker::DoEvent(
                                triggerRecords.push_back(&inblock[n]);
                        }
                }
+               else if (block->fDataType == AliHLTMUONConstants::RootifiedEventDataType() and fAddCustomData)
+               {
+                       // Do nothing for now, will handle this later.
+               }
                else
                {
                        if (block->fDataType != AliHLTMUONConstants::MansoTracksBlockDataType())
@@ -247,6 +258,19 @@ int AliHLTMUONESDMaker::DoEvent(
                }
        }
        
+       // If we were requested to add all dHLT rootified data objects then do so.
+       if (fAddCustomData)
+       {
+               const AliHLTComponentDataType& type = AliHLTMUONConstants::RootifiedEventDataType();
+               const char* classname = AliHLTMUONEvent::Class_Name();
+               const TObject* obj = NULL;
+               for (obj = GetFirstInputObject(type, classname); obj != NULL; obj = GetNextInputObject())
+               {
+                       // Clone the object since the ESD takes ownership of it.
+                       event.AddObject(obj->Clone());
+               }
+       }
+       
        // Now we can look for tracks to add. We needed the ROOT trigger records
        // and reco hits created before we can create track objects.
        for (block = GetFirstInputBlock(AliHLTMUONConstants::MansoTracksBlockDataType());
index 79efbc8..8e5fe7b 100644 (file)
@@ -69,6 +69,7 @@ private:
        
        bool fWarnForUnexpecedBlock;  /// Flag indicating if we should log a warning if we got a block of an unexpected type.
        bool fMakeMinimalESD;  /// Flag to indicate if a minimal ESD object should be created.
+       bool fAddCustomData;  /// Flag to turn on adding of all dHLT rootified objects to the ESD.
 
        ClassDef(AliHLTMUONESDMaker, 0); // Component for converting dHLT reconstructed data into the ESD format.
 };
index d9c3aa7..2030f9b 100644 (file)
@@ -597,7 +597,7 @@ int AliHLTMUONRootifierComponent::DoEvent(
                event.Add(triggerDecision);
        }
        
-       PushBack(&event, "ROOTEVNT", "MUON", specification);
+       PushBack(&event, AliHLTMUONConstants::RootifiedEventDataType(), specification);
        
        return 0;
 }