// -*- Mode: C++ -*-
// $Id$
//* This file is property of and copyright by the ALICE HLT Project *
//* ALICE Experiment at CERN, All rights reserved. *
//* See cxx source for full Copyright notice *
/// @file AliHLTGlobalTrackResidualsComponent.h
/// @author Timur Pocheptsov
/// @date
/// @brief A histogramming component for plotting the Y and Z track residuals
///
/**
* @class AliHLTGlobalTrackResidualsComponent
*
*
General properties:
*
* Component ID: \b GlobalTrackResiduals
* Library: \b libAliHLTGlobal.so
* Input Data Types:
* Output Data Types:
*
* Mandatory arguments:
*
*
* Optional arguments:
*
*
* Configuration:
*
* Configuration by component arguments.
*
* Default CDB entries:
*
* Performance:
* The component does not process any event data.
*
* Memory consumption:
* The component does not process any event data.
*
* @ingroup alihlt_global_components
*/
#ifndef ALIHLTGLOBALTRACKRESIDUALSCOMPONENT_H
#define ALIHLTGLOBALTRACKRESIDUALSCOMPONENT_H
#include
#include
#include
#include "AliHLTProcessor.h"
class AliHLTTPCSpacePointData;
class AliHLTGlobalBarrelTrack;
class AliHLTGlobalTrackResidualsComponent : public AliHLTProcessor {
private:
enum EDefaults {
kNBins = 100
};
public:
/** default constructor */
AliHLTGlobalTrackResidualsComponent();
//Overriders. These functions are required for the registration process
/** Component's id - "name" - "GlobalTrackResiduals" */
const char* GetComponentID();
/** Types of input data blocks */
void GetInputDataTypes(AliHLTComponentDataTypeList& list);
/** The type of output data */
AliHLTComponentDataType GetOutputDataType();
/** Types of output data */
int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
/** Approximate size of output */
virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
/** "Virtual constructor" to create a component */
AliHLTComponent* Spawn();
protected:
//Overriders. Do component's work.
/** Reset histograms */
int DoInit(int argc, const char** argv);
/** Do nothing at the moment */
int DoDeinit();
/** Process input - clusters and global barrel tracks */
int DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
/** Supress warning from compiler about the hidden name */
using AliHLTProcessor::DoEvent;
private:
/** Read input data, find residuals, fill histgrams */
void ProcessBlocks();
/** Read input data, extract clusters */
void ReadClusterBlocks();
/** Extract hits' Xs for the track, sort them. */
void SortHitsX(const AliHLTGlobalBarrelTrack& gt);
/** Find residuals and fill histograms */
void FillResiduals(const AliHLTGlobalBarrelTrack& gt);
/** Clean fClustersArray and fNSpacePoints */
void CleanClusters();
/** Reset histograms - ranges, bins */
void ResetHistograms();
TH1F fResY;
TH1F fResZ;
std::vector > fSortedX; //! Hits, sorted along X
const AliHLTTPCSpacePointData* fClustersArray[36][6]; //! Clusters for event.
UInt_t fNSpacePoints[36][6]; //! Number of points in a cluster for event.
/** Non-copyable class */
AliHLTGlobalTrackResidualsComponent(const AliHLTGlobalTrackResidualsComponent& rhs);
/** Non-copyable class */
AliHLTGlobalTrackResidualsComponent& operator = (const AliHLTGlobalTrackResidualsComponent& rhs);
ClassDef(AliHLTGlobalTrackResidualsComponent, 0);//Component to calculate residuals.
};
#endif