summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
92efec0)
- 3 diamonds in OCDB: GPR/MeanVertexSPD for SPD, GRP/MeanVertex for
ITS tracks, GPR/MeanVertexTPC for TPC tracks. The diamond estimated by the
SPD DA is stored in MeanVertexSPD. This mean vertex can be used to constrain
the SPD vertexer.
- 3 separate flags to have the freedom to use the constraint for
given vertex and not for another. These flags are moved from AliReconstruction
to AliITSRecoParam (for SPD) and AliGRPRecoParam (for tracks), where the other
cuts for the vertexers are.
Andrea
man->SetRun(0);
AliCDBId id("GRP/Calib/MeanVertex",0,AliCDBRunRange::Infinity());
AliCDBId idTPC("GRP/Calib/MeanVertexTPC",0,AliCDBRunRange::Infinity());
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
AliCDBMetaData *metadata= new AliCDBMetaData();
// Get root and AliRoot versions
man->Put(vertexTPC,idTPC,metadata);
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),
//_____________________________________________________________________________
AliGRPRecoParam::AliGRPRecoParam() : AliDetectorRecoParam(),
fMostProbablePt(0.350),
+fVertexerTracksConstraintITS(kTRUE),
+fVertexerTracksConstraintTPC(kTRUE),
fVertexerTracksNCuts(10),
fVertexerTracksITSdcacut(0.1),
fVertexerTracksITSdcacutIter0(0.1),
fVertexerTracksNCuts(10),
fVertexerTracksITSdcacut(0.1),
fVertexerTracksITSdcacutIter0(0.1),
AliGRPRecoParam::AliGRPRecoParam(const AliGRPRecoParam& par) :
AliDetectorRecoParam(par),
fMostProbablePt(par.fMostProbablePt),
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),
fVertexerTracksNCuts(par.fVertexerTracksNCuts),
fVertexerTracksITSdcacut(par.fVertexerTracksITSdcacut),
fVertexerTracksITSdcacutIter0(par.fVertexerTracksITSdcacutIter0),
return param;
}
//_____________________________________________________________________________
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
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 *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 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; }
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
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
//
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
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
Double_t fVertexerTracksTPCfidR; // fiducial radius
Double_t fVertexerTracksTPCfidZ; // fiducial z
- ClassDef(AliGRPRecoParam,2) // global reco parameters
+ ClassDef(AliGRPRecoParam,3) // global reco parameters
fRecoParam(),
fVertexer(NULL),
fRecoParam(),
fVertexer(NULL),
+ fDiamondProfileSPD(NULL),
fDiamondProfile(NULL),
fDiamondProfileTPC(NULL),
fDiamondProfile(NULL),
fDiamondProfileTPC(NULL),
- fMeanVertexConstraint(kTRUE),
-
fGRPData(NULL),
fAlignObjArray(NULL),
fGRPData(NULL),
fAlignObjArray(NULL),
fRecoParam(rec.fRecoParam),
fVertexer(NULL),
fRecoParam(rec.fRecoParam),
fVertexer(NULL),
+ fDiamondProfileSPD(rec.fDiamondProfileSPD),
fDiamondProfile(rec.fDiamondProfile),
fDiamondProfileTPC(rec.fDiamondProfileTPC),
fDiamondProfile(rec.fDiamondProfile),
fDiamondProfileTPC(rec.fDiamondProfileTPC),
- fMeanVertexConstraint(rec.fMeanVertexConstraint),
-
fGRPData(NULL),
fAlignObjArray(rec.fAlignObjArray),
fGRPData(NULL),
fAlignObjArray(rec.fAlignObjArray),
+ 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);
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());
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) {
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) {
} 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());
- AliError("No diamond profile found in OCDB!");
+ AliError("No TPC diamond profile found in OCDB!");
AliSysInfo::AddStamp("LoadLoader");
ftVertexer = new AliVertexerTracks(AliTracker::GetBz());
AliSysInfo::AddStamp("LoadLoader");
ftVertexer = new AliVertexerTracks(AliTracker::GetBz());
- if(fDiamondProfile && fMeanVertexConstraint) ftVertexer->SetVtxStart(fDiamondProfile);
// get vertexer
if (fRunVertexFinder && !CreateVertexer()) {
// get vertexer
if (fRunVertexFinder && !CreateVertexer()) {
// TPC + ITS primary vertex
ftVertexer->SetITSMode();
// TPC + ITS primary vertex
ftVertexer->SetITSMode();
+ ftVertexer->SetConstraintOff();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
grpRecoParam->GetVertexerTracksCutsITS(cutsVertexer);
ftVertexer->SetCuts(cutsVertexer);
delete [] cutsVertexer; cutsVertexer = NULL;
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) {
}
AliESDVertex *pvtx=ftVertexer->FindPrimaryVertex(fesd);
if (pvtx) {
// TPC-only primary vertex
ftVertexer->SetTPCMode();
// TPC-only primary vertex
ftVertexer->SetTPCMode();
+ ftVertexer->SetConstraintOff();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
// get cuts for vertexer from AliGRPRecoParam
if (grpRecoParam) {
Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
grpRecoParam->GetVertexerTracksCutsTPC(cutsVertexer);
ftVertexer->SetCuts(cutsVertexer);
delete [] cutsVertexer; cutsVertexer = NULL;
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) {
}
pvtx=ftVertexer->FindPrimaryVertex(&trkArray,selectedIdx);
if (pvtx) {
fLoader[0]->LoadRecPoints();
TTree* cltree = fLoader[0]->TreeR();
if (cltree) {
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 {
vertex = fVertexer->FindVertexForCurrentEvent(cltree);
}
else {
ftVertexer = NULL;
if(!(AliCDBManager::Instance()->GetCacheFlag())) {
ftVertexer = NULL;
if(!(AliCDBManager::Instance()->GetCacheFlag())) {
+ delete fDiamondProfileSPD;
+ fDiamondProfileSPD = NULL;
delete fDiamondProfile;
fDiamondProfile = NULL;
delete fDiamondProfileTPC;
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 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 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;}
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
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
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
AliGRPObject* fGRPData; // Data from the GRP/GRP/Data CDB folder