+// $Id$
//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project *
//* ALICE Experiment at CERN, All rights reserved. *
//* *
-//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
+//* Primary Authors: Oystein Djuvsland *
//* for The ALICE HLT Project. *
//* *
//* Permission to use, copy, modify and distribute this software and its *
#include "AliHLTGlobalBarrelTrack.h"
#include "TObjArray.h"
#include "TObjString.h"
-#include "TObjArray.h"
-#include "TVector3.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "TFile.h"
, fSolenoidBz(0)
, fMinTracks(1)
, fDetectorArray(0)
+ , fTriggerDecisionPars(0)
+ , fTriggerName(0)
+ , fOCDBEntry(0)
{
// see header file for class documentation
// or
// refer to README to build package
// or
// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
fDetectorArray = new TObjArray;
}
AliHLTTriggerBarrelGeomMultiplicity::~AliHLTTriggerBarrelGeomMultiplicity()
{
// see header file for class documentation
+
+ if (fDetectorArray != NULL) delete fDetectorArray;
}
const char* AliHLTTriggerBarrelGeomMultiplicity::GetTriggerName() const
{
// see header file for class documentation
- // const char* name = fTriggerName;
- // if(name) return name;
+
return "BarrelGeomMultiplicityTrigger";
}
int iResult=0;
int numberOfTracks=-1;
+ if (!fTriggerDecisionPars) {
+ iResult=-ENODEV;
+ }
+
// try the ESD as input
const TObject* obj = GetFirstInputObject(kAliHLTAllDataTypes, "AliESDEvent");
AliESDEvent* esd = dynamic_cast<AliESDEvent*>(const_cast<TObject*>(obj));
TString description;
+
if (esd != NULL)
{
numberOfTracks=0;
esd->GetStdContent();
-
for (Int_t i = 0; i < esd->GetNumberOfTracks(); i++)
{
if (CheckCondition(esd->GetTrack(i), esd->GetMagneticField())) numberOfTracks++;
}
}
}
+
+ bool condition=false;
+ description="Geometrical conditions not matched";
+ AliHLTReadoutList readout;
+
if (numberOfTracks>=fMinTracks)
{
-
- SetDescription(fTriggerDecisionPars->GetDescription());
- AliHLTReadoutList readout(fTriggerDecisionPars->GetReadoutListParameter());
- AliHLTTriggerDecision decision(
- true,
- fTriggerDecisionPars->GetTriggerName().Data(),
- AliHLTTriggerDomain(readout),
- fTriggerDecisionPars->GetDescription()
- );
- TriggerEvent(&decision);
+ condition=true;
+ description=fTriggerDecisionPars->GetDescription();
+ readout=fTriggerDecisionPars->GetReadoutListParameter();
+ HLTDebug("Geometrical acceptance trigger %s triggered", fTriggerDecisionPars->GetTriggerName().Data());
}
-
+
+ AliHLTTriggerDecision decision(
+ condition,
+ fTriggerDecisionPars->GetTriggerName().Data(),
+ AliHLTTriggerDomain(readout),
+ description.Data()
+ );
+ TriggerEvent(&decision, kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
+
return iResult;
}
+
template<class T>
bool AliHLTTriggerBarrelGeomMultiplicity::CheckCondition(T* track, float b)
{
+
bool ret = false;
// see header file for class documentation
for(Int_t i = 0; i < fDetectorArray->GetEntries(); i++)
{
AliHLTTriggerDetectorGeom *det = static_cast<AliHLTTriggerDetectorGeom*>(fDetectorArray->At(i));
+
Double_t trackPoint[3];
-
+ Double_t normVector[3];
+
det->GetInitialPoint(trackPoint);
-
- bool ret = track->Intersect(trackPoint, det->NormVector(), b);
+ det->GetNormVector(normVector);
+
+ bool ret = track->Intersect(trackPoint, normVector, b);
+ if(ret)
+ {
+ if(det->IsInDetector(trackPoint)) return true;
+ }
}
return false;
}
// first configure the default
int iResult=0;
+ // Matthias 05.04.2011 code audit
+ // looks like somebody has to commission this component
+ HLTWarning("this component is not tested and needs most likely a major revision!");
+
if (iResult>=0 && argc>0)
iResult=ConfigureFromArgumentString(argc, argv);
- HLTWarning("TEST");
+ if (!fTriggerDecisionPars) {
+ HLTError("decision parameter not initialized");
+ iResult=-ENODEV;
+ }
+ fSolenoidBz=GetBz();
+
return iResult;
}
int AliHLTTriggerBarrelGeomMultiplicity::DoDeinit()
{
// see header file for class documentation
+ if (fTriggerName) delete fTriggerName;
+ fTriggerName=NULL;
return 0;
}
int AliHLTTriggerBarrelGeomMultiplicity::ReadPreprocessorValues(const char* /*modules*/)
{
- // see header file for class documentation
+ // see header file for function documentation
- // TODO 2009-10-10: implementation
- // for the moment very quick, just reload the magnetic field
- return ConfigureFromCDBTObjString(kAliHLTCDBSolenoidBz);
+ // nothing to do for the moment
+ return 0;
}
int AliHLTTriggerBarrelGeomMultiplicity::GetDetectorGeomsFromCDBObject(const char *cdbEntry, const char* chainId)
{
// see header file for function documentation
int nDetectorGeoms=0;
+
+ if(fDetectorArray)
+ {
+ fDetectorArray->Clear();
+ }
+ else
+ {
+ fDetectorArray = new TObjArray();
+ }
+
const char *path = cdbEntry;
- if(!path) path = fOCDBEntry;
+ if(!path) path = fOCDBEntry;
+
if(path)
{
// const char* chainId=GetChainId();
for(int i = 0; i < pArr->GetEntries(); i++)
{
- if(!strcmp(pArr->At(i)->ClassName(), "AliHLTTriggerDecision"))
+ if(!strcmp(pArr->At(i)->ClassName(), "AliHLTTriggerDecisionParameters"))
{
fTriggerDecisionPars = dynamic_cast<AliHLTTriggerDecisionParameters*>(pArr->At(i));
}
- else if(!strcmp(pArr->At(i)->ClassName(), "AliHLTTriggerDetectorGeom"))
+ else if(pArr->At(i)->InheritsFrom("AliHLTTriggerDetectorGeom"))
{
fDetectorArray->AddLast(dynamic_cast<AliHLTTriggerDetectorGeom*>(pArr->At(i)));
nDetectorGeoms++;
- HLTWarning("received TObjArray of %d detector geometries", nDetectorGeoms);
+ HLTDebug("received detector geometry of type %s", pArr->At(i)->ClassName());
}
else
{
- HLTWarning("Unknown object in configuration object");
+ HLTWarning("Unknown object of type %s in configuration object", pArr->At(i)->ClassName());
}
}
}
nDetectorGeoms=-ENOENT;
}
}
+
+ HLTInfo("received %d detector geometries", nDetectorGeoms);
+
return nDetectorGeoms;
}
// see header file for function documentation
int nDetectorGeoms=0;
+ if(fDetectorArray)
+ {
+ fDetectorArray->Clear();
+ }
+ else
+ {
+ fDetectorArray = new TObjArray();
+ }
+
+
if (filename)
{
TFile *geomfile = TFile::Open(filename, "READ");
if(geomfile)
{
-
HLTInfo("configure from file \"%s\"", filename);
TObjArray* pArr=dynamic_cast<TObjArray*>(geomfile->Get("GeomConf"));
if (pArr)
{
fDetectorArray->AddLast(dynamic_cast<AliHLTTriggerDetectorGeom*>(pArr->At(i)));
nDetectorGeoms++;
- HLTWarning("received detector geometry of type %s", pArr->At(i)->ClassName());
+ HLTDebug("received detector geometry of type %s", pArr->At(i)->ClassName());
}
else
{
nDetectorGeoms=-ENOENT;
}
}
- HLTWarning("received TObjArray with %d detector geometries", nDetectorGeoms);
+ else
+ {
+ HLTError("ROOT file name not specified");
+ }
+ HLTInfo("received %d detector geometries", nDetectorGeoms);
return nDetectorGeoms;
}
int i=0;
TString argument=argv[i];
- // -maxpt
if (argument.CompareTo("-geomfile")==0)
{
if (++i>=argc) return -EPROTO;
return 2;
}
- if (argument.CompareTo("-trgname")==0)
+ if (argument.CompareTo("-triggername")==0)
{
- if (++i>=argc) return -EPROTO;
-
- fTriggerName = new char[128];
- sprintf(fTriggerName, argv[i]);
+ if (++i>=argc || argv[i]==NULL) return -EPROTO;
+
+ int namelen=strlen(argv[i])+1;
+ fTriggerName = new char[namelen];
+ if (!fTriggerName) return -ENOMEM;
+ snprintf(fTriggerName, namelen, "%s", argv[i]);
fOCDBEntry = fTriggerName;
return 2;
}
+ return 0;
}
+