man->SetRun(0);
AliCDBId id("GRP/Calib/MeanVertex",0,AliCDBRunRange::Infinity());
AliCDBId idTPC("GRP/Calib/MeanVertexTPC",0,AliCDBRunRange::Infinity());
+ AliCDBId idSPD("GRP/Calib/MeanVertexSPD",0,AliCDBRunRange::Infinity());
AliCDBMetaData *metadata= new AliCDBMetaData();
// Get root and AliRoot versions
man->Put(vertexTPC,idTPC,metadata);
+ position[0]=xmed;
+ position[1]=ymed;
+ position[2]=0.;
+ sigma[0]=TMath::Sqrt(sigx*sigx+resolx*resolx);
+ sigma[1]=TMath::Sqrt(sigy*sigy+resoly*resoly);
+ sigma[2]=sigz;
+
+ AliESDVertex *vertexSPD = new AliESDVertex(position,sigma,"vtxmean");
+ vertexSPD->PrintStatus();
+
+ man->Put(vertexSPD,idSPD,metadata);
+
}
//_____________________________________________________________________________
AliGRPRecoParam::AliGRPRecoParam() : AliDetectorRecoParam(),
fMostProbablePt(0.350),
+fVertexerTracksConstraintITS(kTRUE),
+fVertexerTracksConstraintTPC(kTRUE),
fVertexerTracksNCuts(10),
fVertexerTracksITSdcacut(0.1),
fVertexerTracksITSdcacutIter0(0.1),
AliGRPRecoParam::AliGRPRecoParam(const AliGRPRecoParam& par) :
AliDetectorRecoParam(par),
fMostProbablePt(par.fMostProbablePt),
+ fVertexerTracksConstraintITS(par.fVertexerTracksConstraintITS),
+ fVertexerTracksConstraintTPC(par.fVertexerTracksConstraintTPC),
fVertexerTracksNCuts(par.fVertexerTracksNCuts),
fVertexerTracksITSdcacut(par.fVertexerTracksITSdcacut),
fVertexerTracksITSdcacutIter0(par.fVertexerTracksITSdcacutIter0),
return param;
}
//_____________________________________________________________________________
+AliGRPRecoParam *AliGRPRecoParam::GetCosmicTestParam()
+{
+ //
+ // make default reconstruction parameters for cosmics env.
+ //
+ AliGRPRecoParam *param = new AliGRPRecoParam();
+
+ return param;
+}
+//_____________________________________________________________________________
void AliGRPRecoParam::GetVertexerTracksCuts(Int_t mode,Double_t *cuts) const {
//
// get cuts for ITS (0) or TPC (1) mode
static AliGRPRecoParam *GetLowFluxParam();// make reco parameters for low flux env.
static AliGRPRecoParam *GetHighFluxParam();// make reco parameters for high flux env.
+ static AliGRPRecoParam *GetCosmicTestParam();// make reco parameters for cosmics env.
void SetMostProbablePt(Double_t pt=0.350) { fMostProbablePt=pt; return; }
Double_t GetMostProbablePt() const { return fMostProbablePt; }
+ void SetVertexerTracksConstraintITS(Bool_t constr=kTRUE) { fVertexerTracksConstraintITS=constr; return; }
+ void SetVertexerTracksConstraintTPC(Bool_t constr=kTRUE) { fVertexerTracksConstraintTPC=constr; return; }
void SetVertexerTracksCuts(Int_t mode,Int_t ncuts,Double_t cuts[10]);
void SetVertexerTracksCutsITS(Int_t ncuts,Double_t cuts[10])
{ SetVertexerTracksCuts(0,ncuts,cuts); return; }
void SetVertexerTracksCutsTPC(Int_t ncuts,Double_t cuts[10])
{ SetVertexerTracksCuts(1,ncuts,cuts); return; }
+ Bool_t GetVertexerTracksConstraintITS() const { return fVertexerTracksConstraintITS; }
+ Bool_t GetVertexerTracksConstraintTPC() const { return fVertexerTracksConstraintTPC; }
Int_t GetVertexerTracksNCuts() const { return fVertexerTracksNCuts; }
void GetVertexerTracksCuts(Int_t mode,Double_t *cuts) const;
void GetVertexerTracksCutsITS(Double_t *cuts) const
//
Double_t fMostProbablePt; // to be used for B=0 tracking
+ Bool_t fVertexerTracksConstraintITS; // diamond constr for AliVertexerTracks
+ Bool_t fVertexerTracksConstraintTPC; // diamond constr for AliVertexerTracks
Int_t fVertexerTracksNCuts; // number of cuts for AliVertexerTracks
// cuts for AliVertexerTracks: ITS mode
Double_t fVertexerTracksITSdcacut; // general dca
Double_t fVertexerTracksTPCfidR; // fiducial radius
Double_t fVertexerTracksTPCfidZ; // fiducial z
- ClassDef(AliGRPRecoParam,2) // global reco parameters
+ ClassDef(AliGRPRecoParam,3) // global reco parameters
};
#endif
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());
}
- //*** 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()) {
// 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) {
// 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;
void SetWriteAlignmentData(Bool_t flag=kTRUE){fWriteAlignmentData=flag;}
void SetWriteESDfriend(Bool_t flag=kTRUE){fWriteESDfriend=flag;}
void SetFillTriggerESD(Bool_t flag=kTRUE){fFillTriggerESD=flag;}
+ void SetDiamondProfileSPD(AliESDVertex *dp) {fDiamondProfileSPD=dp;}
void SetDiamondProfile(AliESDVertex *dp) {fDiamondProfile=dp;}
void SetDiamondProfileTPC(AliESDVertex *dp) {fDiamondProfileTPC=dp;}
- void SetMeanVertexConstraint(Bool_t flag=kTRUE){fMeanVertexConstraint=flag;}
void SetCleanESD(Bool_t flag=kTRUE){fCleanESD=flag;}
void SetUseHLTData(const char* detectors){fUseHLTData=detectors;}
AliLoader* fLoader[fgkNDetectors]; //! detector loaders
AliVertexer* fVertexer; //! vertexer for ITS
AliTracker* fTracker[fgkNDetectors]; //! trackers
- AliESDVertex* fDiamondProfile; // (x,y) diamond profile for AliVertexerTracks
+ AliESDVertex* fDiamondProfileSPD; // (x,y) diamond profile from SPD for AliITSVertexer3D(Z)
+ AliESDVertex* fDiamondProfile; // (x,y) diamond profile for AliVertexerTracks (ITS+TPC)
AliESDVertex* fDiamondProfileTPC; // (x,y) diamond profile from TPC for AliVertexerTracks
- Bool_t fMeanVertexConstraint; // use fDiamondProfile in AliVertexerTracks
AliGRPObject* fGRPData; // Data from the GRP/GRP/Data CDB folder