fLastIndex(0),
fArrayIndex(0),
fIsIndexBuilt(kFALSE),
+ fAlignObjs(0),
fMisalignObjs(0),
fTrackFitter(0),
- fMinimizer(0)
+ fMinimizer(0),
+ fDoUpdate(kTRUE)
{
// Default constructor
InitIndex();
fLastIndex(0),
fArrayIndex(0),
fIsIndexBuilt(kFALSE),
+ fAlignObjs(0),
fMisalignObjs(0),
fTrackFitter(0),
- fMinimizer(0)
+ fMinimizer(0),
+ fDoUpdate(kTRUE)
{
// Constructor in the case
// the user provides an already
//______________________________________________________________________________
AliAlignmentTracks::AliAlignmentTracks(const char *esdfilename, const char *esdtreename):
+ fESDChain(new TChain(esdtreename)),
fPointsFilename("AliTrackPoints.root"),
fPointsFile(0),
fPointsTree(0),
fLastIndex(0),
fArrayIndex(0),
fIsIndexBuilt(kFALSE),
+ fAlignObjs(0),
fMisalignObjs(0),
fTrackFitter(0),
- fMinimizer(0)
+ fMinimizer(0),
+ fDoUpdate(kTRUE)
{
// Constructor in the case
// the user provides a single ESD file
// or a directory containing ESD files
- fESDChain = new TChain(esdtreename);
fESDChain->Add(esdfilename);
InitIndex();
InitAlignObjs();
}
-//______________________________________________________________________________
-AliAlignmentTracks::AliAlignmentTracks(const AliAlignmentTracks &alignment):
- TObject(alignment)
-{
- // Copy constructor
- // not implemented
- AliWarning("Copy constructor not implemented!");
-}
-
-//______________________________________________________________________________
-AliAlignmentTracks& AliAlignmentTracks::operator= (const AliAlignmentTracks& alignment)
-{
- // Asignment operator
- // not implemented
- if(this==&alignment) return *this;
-
- AliWarning("Asignment operator not implemented!");
-
- ((TObject *)this)->operator=(alignment);
-
- return *this;
-}
//______________________________________________________________________________
AliAlignmentTracks::~AliAlignmentTracks()
AliESD *esd = 0;
fESDChain->SetBranchAddress("ESD",&esd);
+ AliESDfriend *esdf = 0;
+ fESDChain->SetBranchStatus("ESDfriend*",1);
+ fESDChain->SetBranchAddress("ESDfriend.",&esdf);
// Open the output file
if (fPointsFilename.Data() == "") {
TTree *pointsTree = new TTree("spTree", "Tree with track space point arrays");
const AliTrackPointArray *array = 0;
pointsTree->Branch("SP","AliTrackPointArray", &array);
-
Int_t ievent = 0;
while (fESDChain->GetEntry(ievent++)) {
if (!esd) break;
+
+ esd->SetESDfriend(esdf); //Attach the friend to the ESD
+
Int_t ntracks = esd->GetNumberOfTracks();
for (Int_t itrack=0; itrack < ntracks; itrack++) {
AliESDtrack * track = esd->GetTrack(itrack);
// to initialize the volume paths
AliAlignObjAngles alobj;
- TFile *fPointsFile = TFile::Open(fPointsFilename);
+ fPointsFile = TFile::Open(fPointsFilename);
if (!fPointsFile || !fPointsFile->IsOpen()) {
AliWarning(Form("Can't open %s !",fPointsFilename.Data()));
return;
}
fPointsTree->SetBranchAddress("SP", &array);
- Int_t nArrays = fPointsTree->GetEntries();
+ Int_t nArrays = (Int_t)fPointsTree->GetEntries();
for (Int_t iArray = 0; iArray < nArrays; iArray++)
{
fPointsTree->GetEvent(iArray);
for (Int_t ipoint = 0; ipoint < array->GetNPoints(); ipoint++) {
UShort_t volId = array->GetVolumeID()[ipoint];
// check if the volId is valid
- if (!AliAlignObj::GetVolPath(volId)) {
- AliError(Form("The volume id %d has no default volume path !",
+ if (!AliAlignObj::SymName(volId)) {
+ AliError(Form("The volume id %d has no default volume name !",
volId));
continue;
}
fAlignObjs[iLayer] = new AliAlignObj*[AliAlignObj::LayerSize(iLayer + AliAlignObj::kFirstLayer)];
for (Int_t iModule = 0; iModule < AliAlignObj::LayerSize(iLayer + AliAlignObj::kFirstLayer); iModule++) {
UShort_t volid = AliAlignObj::LayerToVolUID(iLayer+ AliAlignObj::kFirstLayer,iModule);
- fAlignObjs[iLayer][iModule] = new AliAlignObjAngles("",volid,0,0,0,0,0,0);
+ fAlignObjs[iLayer][iModule] = new AliAlignObjAngles(AliAlignObj::SymName(volid),volid,0,0,0,0,0,0,kTRUE);
}
}
}
minimizer->Minimize();
// Update the alignment object(s)
- for (Int_t iVolId = 0; iVolId < nVolIds; iVolId++) {
+ if (fDoUpdate) for (Int_t iVolId = 0; iVolId < nVolIds; iVolId++) {
UShort_t volid = (*volids)[iVolId];
Int_t iModule;
AliAlignObj::ELayerID iLayer = AliAlignObj::VolUIDToLayer(volid,iModule);
- AliAlignObj *alignObj = fAlignObjs[iLayer-AliAlignObj::kFirstLayer][iModule];
+ AliAlignObj *alignObj = fAlignObjs[iLayer-AliAlignObj::kFirstLayer][iModule];
*alignObj *= *minimizer->GetAlignObj();
alignObj->Print("");
}
for (Int_t i = 0; i < nArrays; i++) points[i] = 0x0;
// Init the array used to flag already loaded tree entries
- Bool_t *indexUsed = new Bool_t[fPointsTree->GetEntries()];
+ Bool_t *indexUsed = new Bool_t[(UInt_t)fPointsTree->GetEntries()];
for (Int_t i = 0; i < fPointsTree->GetEntries(); i++)
indexUsed[i] = kFALSE;