fRecoParam(),
fVertexer(NULL),
+ fDiamondProfileSPD(NULL),
fDiamondProfile(NULL),
fDiamondProfileTPC(NULL),
- fMeanVertexConstraint(kTRUE),
-
+
fGRPData(NULL),
fAlignObjArray(NULL),
fRecoParam(rec.fRecoParam),
fVertexer(NULL),
+ fDiamondProfileSPD(rec.fDiamondProfileSPD),
fDiamondProfile(rec.fDiamondProfile),
fDiamondProfileTPC(rec.fDiamondProfileTPC),
- fMeanVertexConstraint(rec.fMeanVertexConstraint),
-
+
fGRPData(NULL),
fAlignObjArray(rec.fAlignObjArray),
}
fVertexer = NULL;
+ delete fDiamondProfileSPD; fDiamondProfileSPD = NULL;
+ if (rec.fDiamondProfileSPD) fDiamondProfileSPD = new AliESDVertex(*rec.fDiamondProfileSPD);
delete fDiamondProfile; fDiamondProfile = NULL;
if (rec.fDiamondProfile) fDiamondProfile = new AliESDVertex(*rec.fDiamondProfile);
delete fDiamondProfileTPC; fDiamondProfileTPC = NULL;
if (rec.fDiamondProfileTPC) fDiamondProfileTPC = new AliESDVertex(*rec.fDiamondProfileTPC);
- fMeanVertexConstraint = rec.fMeanVertexConstraint;
delete fGRPData; fGRPData = NULL;
// if (rec.fGRPData) fGRPData = (TMap*)((rec.fGRPData)->Clone());
for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
if(!IsSelected(fgkDetectorName[iDet], detStr)) continue;
- if(fgkDetectorName[iDet]=="HLT") continue;
+ if(!strcmp(fgkDetectorName[iDet],"HLT")) continue;
if(AliGeomManager::IsModuleInGeom(fgkDetectorName[iDet]))
{
loadAlObjsListOfDets += fgkDetectorName[iDet];
}
Int_t activeDetectors = fGRPData->GetDetectorMask();
- if (activeDetectors==AliGRPObject::GetInvalidInt()) {
+ if (activeDetectors==AliGRPObject::GetInvalidUInt()) {
AliError("GRP/GRP/Data entry: missing value for the detector mask ! Using 1074790399");
activeDetectors = 1074790399;
}
}
- //*** Get the diamond profile from OCDB
+ //*** Get the diamond profiles from OCDB
+ entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
+ if (entry) {
+ fDiamondProfileSPD = dynamic_cast<AliESDVertex*> (entry->GetObject());
+ } else {
+ AliError("No SPD diamond profile found in OCDB!");
+ }
+
entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertex");
if (entry) {
- if (fMeanVertexConstraint)
- fDiamondProfile = dynamic_cast<AliESDVertex*> (entry->GetObject());
+ fDiamondProfile = dynamic_cast<AliESDVertex*> (entry->GetObject());
} else {
AliError("No diamond profile found in OCDB!");
}
entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexTPC");
if (entry) {
- if (fMeanVertexConstraint)
- fDiamondProfileTPC = dynamic_cast<AliESDVertex*> (entry->GetObject());
+ fDiamondProfileTPC = dynamic_cast<AliESDVertex*> (entry->GetObject());
} else {
- AliError("No diamond profile found in OCDB!");
+ AliError("No TPC diamond profile found in OCDB!");
}
return kTRUE;
AliSysInfo::AddStamp("LoadLoader");
ftVertexer = new AliVertexerTracks(AliTracker::GetBz());
- if(fDiamondProfile && fMeanVertexConstraint) ftVertexer->SetVtxStart(fDiamondProfile);
// get vertexer
if (fRunVertexFinder && !CreateVertexer()) {
fhlttree = new TTree("HLTesdTree", "Tree with HLT ESD objects");
fhltesd = new AliESDEvent();
fhltesd->CreateStdContent();
+
+ // read the ESD template from CDB
+ // HLT is allowed to put non-std content to its ESD, the non-std
+ // objects need to be created before invocation of WriteToTree in
+ // order to create all branches. Initialization is done from an
+ // ESD layout template in CDB
+ AliCDBManager* man = AliCDBManager::Instance();
+ AliCDBPath hltESDConfigPath("HLT/ConfigHLT/esdLayout");
+ AliCDBEntry* hltESDConfig=NULL;
+ if (man->GetId(hltESDConfigPath)!=NULL &&
+ (hltESDConfig=man->Get(hltESDConfigPath))!=NULL) {
+ AliESDEvent* pESDLayout=dynamic_cast<AliESDEvent*>(hltESDConfig->GetObject());
+ if (pESDLayout) {
+ // init all internal variables from the list of objects
+ pESDLayout->GetStdContent();
+
+ // copy content and create non-std objects
+ *fhltesd=*pESDLayout;
+ fhltesd->Reset();
+ } else {
+ AliError(Form("error setting hltEsd layout from %s: invalid object type",
+ hltESDConfigPath.GetPath().Data()));
+ }
+ }
+
fhltesd->WriteToTree(fhlttree);
fhlttree->GetUserInfo()->Add(fhltesd);
fhltesd->SetMagneticField(AliTracker::GetBz());
// Set most probable pt, for B=0 tracking
+ // Get the global reco-params. They are atposition 16 inside the array of detectors in fRecoParam
const AliGRPRecoParam *grpRecoParam = dynamic_cast<const AliGRPRecoParam*>(fRecoParam.GetDetRecoParam(fgkNDetectors));
if (grpRecoParam) AliExternalTrackParam::SetMostProbablePt(grpRecoParam->GetMostProbablePt());
ok = kFALSE;
if (tpcTrack)
ok = AliTracker::
- PropagateTrackTo(tpcTrack,kRadius,track->GetMass(),kMaxStep,kTRUE);
+ PropagateTrackTo(tpcTrack,kRadius,track->GetMass(),kMaxStep,kFALSE);
if (ok) {
Int_t n=trkArray.GetEntriesFast();
if (track->IsOn(AliESDtrack::kITSrefit)) continue;
AliTracker::
- PropagateTrackTo(track,kRadius,track->GetMass(),kMaxStep,kTRUE);
+ PropagateTrackTo(track,kRadius,track->GetMass(),kMaxStep,kFALSE);
track->RelateToVertex(fesd->GetPrimaryVertexSPD(), kBz, kVeryBig);
}
}
if (runVertexFinderTracks) {
- // Get the global reco-params. They are atposition 16 inside the array of detectors in fRecoParam
- const AliGRPRecoParam *grpRecoParam = dynamic_cast<const AliGRPRecoParam*>(fRecoParam.GetDetRecoParam(fgkNDetectors));
-
// TPC + ITS primary vertex
ftVertexer->SetITSMode();
+ ftVertexer->SetConstraintOff();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
grpRecoParam->GetVertexerTracksCutsITS(cutsVertexer);
ftVertexer->SetCuts(cutsVertexer);
delete [] cutsVertexer; cutsVertexer = NULL;
- }
- if(fDiamondProfile && fMeanVertexConstraint) {
- ftVertexer->SetVtxStart(fDiamondProfile);
- } else {
- ftVertexer->SetConstraintOff();
+ if(fDiamondProfile && grpRecoParam->GetVertexerTracksConstraintITS())
+ ftVertexer->SetVtxStart(fDiamondProfile);
}
AliESDVertex *pvtx=ftVertexer->FindPrimaryVertex(fesd);
if (pvtx) {
if (pvtx->GetStatus()) {
- fesd->SetPrimaryVertex(pvtx);
+ fesd->SetPrimaryVertexTracks(pvtx);
for (Int_t i=0; i<ntracks; i++) {
AliESDtrack *t = fesd->GetTrack(i);
t->RelateToVertex(pvtx, kBz, kVeryBig);
// TPC-only primary vertex
ftVertexer->SetTPCMode();
+ ftVertexer->SetConstraintOff();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
grpRecoParam->GetVertexerTracksCutsTPC(cutsVertexer);
ftVertexer->SetCuts(cutsVertexer);
delete [] cutsVertexer; cutsVertexer = NULL;
- }
- if(fDiamondProfileTPC && fMeanVertexConstraint) {
- ftVertexer->SetVtxStart(fDiamondProfileTPC);
- } else {
- ftVertexer->SetConstraintOff();
+ if(fDiamondProfileTPC && grpRecoParam->GetVertexerTracksConstraintTPC())
+ ftVertexer->SetVtxStart(fDiamondProfileTPC);
}
pvtx=ftVertexer->FindPrimaryVertex(&trkArray,selectedIdx);
if (pvtx) {
fLoader[0]->LoadRecPoints();
TTree* cltree = fLoader[0]->TreeR();
if (cltree) {
- if(fDiamondProfile) fVertexer->SetVtxStart(fDiamondProfile);
+ if(fDiamondProfileSPD) fVertexer->SetVtxStart(fDiamondProfileSPD);
vertex = fVertexer->FindVertexForCurrentEvent(cltree);
}
else {
ftVertexer = NULL;
if(!(AliCDBManager::Instance()->GetCacheFlag())) {
+ delete fDiamondProfileSPD;
+ fDiamondProfileSPD = NULL;
delete fDiamondProfile;
fDiamondProfile = NULL;
delete fDiamondProfileTPC;
AliESDtrack *track = esd->GetTrack(itrack);
Int_t nsp = 0;
Int_t idx[200];
- for (Int_t iDet = 3; iDet >= 0; iDet--) {// TOF, TRD, TPC, ITS clusters
+ for (Int_t iDet = 5; iDet >= 0; iDet--) {// TOF, TRD, TPC, ITS clusters
nsp += track->GetNcls(iDet);
if (iDet==0) { // ITS "extra" clusters
AliTrackPointArray *sp = new AliTrackPointArray(nsp);
track->SetTrackPointArray(sp);
Int_t isptrack = 0;
- for (Int_t iDet = 3; iDet >= 0; iDet--) {
+ for (Int_t iDet = 5; iDet >= 0; iDet--) {
AliTracker *tracker = fTracker[iDet];
if (!tracker) continue;
Int_t nspdet = track->GetClusters(iDet,idx);
AliInfo(Form("Loading AliEVE macro: %s",macroStr.Data()));
if (gROOT->LoadMacro(macroStr.Data()) != 0) return kFALSE;
- gROOT->ProcessLine("if (!gAliEveEvent) {gAliEveEvent = new AliEveEventManager();gAliEveEvent->AddNewEventCommand(\"alieve_online_on_new_event()\");gEve->AddEvent(gAliEveEvent);};");
+ gROOT->ProcessLine("if (!AliEveEventManager::GetMaster()){new AliEveEventManager();AliEveEventManager::GetMaster()->AddNewEventCommand(\"alieve_online_on_new_event()\");gEve->AddEvent(AliEveEventManager::GetMaster());};");
gROOT->ProcessLine("alieve_online_init()");
return kTRUE;
// successful initialization of AliEVE.
AliInfo("Running AliEVE...");
- gROOT->ProcessLine(Form("gAliEveEvent->SetEvent((AliRunLoader*)%p,(AliRawReader*)%p,(AliESDEvent*)%p);",fRunLoader,fRawReader,fesd));
+ gROOT->ProcessLine(Form("AliEveEventManager::GetMaster()->SetEvent((AliRunLoader*)%p,(AliRawReader*)%p,(AliESDEvent*)%p);",fRunLoader,fRawReader,fesd));
gSystem->Run();
}