ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Redo primary vertex on the fly, using the diamond constraint              //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////


#include <AliESDEvent.h>
#include <AliESDInputHandler.h>
#include <AliVertexerTracks.h>
#include <AliTender.h>
#include <AliCDBId.h>
#include <AliCDBManager.h>
#include <AliCDBEntry.h>
#include <AliESDUtils.h>

#include "AliVtxTenderSupply.h"

ClassImp(AliVtxTenderSupply)

AliVtxTenderSupply::AliVtxTenderSupply() :
  AliTenderSupply(),
  fDiamond(0x0),
  fRefitAlgo(-1)
{
  //
  // default ctor
  //
}

//_____________________________________________________
AliVtxTenderSupply::AliVtxTenderSupply(const char *name, const AliTender *tender) :
  AliTenderSupply(name,tender),
  fDiamond(0x0),
  fRefitAlgo(-1)
{
  //
  // named ctor
  //
}

//_____________________________________________________
void AliVtxTenderSupply::ProcessEvent()
{
  //
  // Recalculate the Vertex with constraint
  //

  AliESDEvent *event=fTender->GetEvent();
  if (!event) return;

  //
  if (fRefitAlgo >=0 ) { // refit with user supplied algo and using the diamond stored in ESD
    AliESDUtils::RefitESDVertexTracks(event, fRefitAlgo);
    return;
  }
  //

  if (fTender->RunChanged()){
    fDiamond=0x0;
    AliCDBEntry *meanVertex=fTender->GetCDBManager()->Get("GRP/Calib/MeanVertex",fTender->GetRun());
    if (!meanVertex) {
      AliError("No new MeanVertex entry found");
      return;
    } else {
      fDiamond=(AliESDVertex*)meanVertex->GetObject();
    }
    //printf("\nRun %d, sigmaX %f, sigmaY %f\n",fTender->GetRun(),fDiamond->GetXRes(),fDiamond->GetYRes());
  }

  if (!fDiamond) return;

  // Redo the primary with the constraint ONLY if the updated mean vertex was found in the OCDB
  if ( (fDiamond->GetXRes())<2){ 
    AliVertexerTracks vertexer(event->GetMagneticField());
    vertexer.SetITSMode();
    vertexer.SetMinClusters(3);
    vertexer.SetVtxStart(fDiamond);
    AliESDVertex *pvertex = vertexer.FindPrimaryVertex(event);
    event->SetPrimaryVertexTracks(pvertex);
    // write the diamond parameters
    event->SetDiamond(fDiamond);
    delete pvertex;
  }  
}
 AliVtxTenderSupply.cxx:1
 AliVtxTenderSupply.cxx:2
 AliVtxTenderSupply.cxx:3
 AliVtxTenderSupply.cxx:4
 AliVtxTenderSupply.cxx:5
 AliVtxTenderSupply.cxx:6
 AliVtxTenderSupply.cxx:7
 AliVtxTenderSupply.cxx:8
 AliVtxTenderSupply.cxx:9
 AliVtxTenderSupply.cxx:10
 AliVtxTenderSupply.cxx:11
 AliVtxTenderSupply.cxx:12
 AliVtxTenderSupply.cxx:13
 AliVtxTenderSupply.cxx:14
 AliVtxTenderSupply.cxx:15
 AliVtxTenderSupply.cxx:16
 AliVtxTenderSupply.cxx:17
 AliVtxTenderSupply.cxx:18
 AliVtxTenderSupply.cxx:19
 AliVtxTenderSupply.cxx:20
 AliVtxTenderSupply.cxx:21
 AliVtxTenderSupply.cxx:22
 AliVtxTenderSupply.cxx:23
 AliVtxTenderSupply.cxx:24
 AliVtxTenderSupply.cxx:25
 AliVtxTenderSupply.cxx:26
 AliVtxTenderSupply.cxx:27
 AliVtxTenderSupply.cxx:28
 AliVtxTenderSupply.cxx:29
 AliVtxTenderSupply.cxx:30
 AliVtxTenderSupply.cxx:31
 AliVtxTenderSupply.cxx:32
 AliVtxTenderSupply.cxx:33
 AliVtxTenderSupply.cxx:34
 AliVtxTenderSupply.cxx:35
 AliVtxTenderSupply.cxx:36
 AliVtxTenderSupply.cxx:37
 AliVtxTenderSupply.cxx:38
 AliVtxTenderSupply.cxx:39
 AliVtxTenderSupply.cxx:40
 AliVtxTenderSupply.cxx:41
 AliVtxTenderSupply.cxx:42
 AliVtxTenderSupply.cxx:43
 AliVtxTenderSupply.cxx:44
 AliVtxTenderSupply.cxx:45
 AliVtxTenderSupply.cxx:46
 AliVtxTenderSupply.cxx:47
 AliVtxTenderSupply.cxx:48
 AliVtxTenderSupply.cxx:49
 AliVtxTenderSupply.cxx:50
 AliVtxTenderSupply.cxx:51
 AliVtxTenderSupply.cxx:52
 AliVtxTenderSupply.cxx:53
 AliVtxTenderSupply.cxx:54
 AliVtxTenderSupply.cxx:55
 AliVtxTenderSupply.cxx:56
 AliVtxTenderSupply.cxx:57
 AliVtxTenderSupply.cxx:58
 AliVtxTenderSupply.cxx:59
 AliVtxTenderSupply.cxx:60
 AliVtxTenderSupply.cxx:61
 AliVtxTenderSupply.cxx:62
 AliVtxTenderSupply.cxx:63
 AliVtxTenderSupply.cxx:64
 AliVtxTenderSupply.cxx:65
 AliVtxTenderSupply.cxx:66
 AliVtxTenderSupply.cxx:67
 AliVtxTenderSupply.cxx:68
 AliVtxTenderSupply.cxx:69
 AliVtxTenderSupply.cxx:70
 AliVtxTenderSupply.cxx:71
 AliVtxTenderSupply.cxx:72
 AliVtxTenderSupply.cxx:73
 AliVtxTenderSupply.cxx:74
 AliVtxTenderSupply.cxx:75
 AliVtxTenderSupply.cxx:76
 AliVtxTenderSupply.cxx:77
 AliVtxTenderSupply.cxx:78
 AliVtxTenderSupply.cxx:79
 AliVtxTenderSupply.cxx:80
 AliVtxTenderSupply.cxx:81
 AliVtxTenderSupply.cxx:82
 AliVtxTenderSupply.cxx:83
 AliVtxTenderSupply.cxx:84
 AliVtxTenderSupply.cxx:85
 AliVtxTenderSupply.cxx:86
 AliVtxTenderSupply.cxx:87
 AliVtxTenderSupply.cxx:88
 AliVtxTenderSupply.cxx:89
 AliVtxTenderSupply.cxx:90
 AliVtxTenderSupply.cxx:91
 AliVtxTenderSupply.cxx:92
 AliVtxTenderSupply.cxx:93
 AliVtxTenderSupply.cxx:94
 AliVtxTenderSupply.cxx:95
 AliVtxTenderSupply.cxx:96
 AliVtxTenderSupply.cxx:97
 AliVtxTenderSupply.cxx:98
 AliVtxTenderSupply.cxx:99
 AliVtxTenderSupply.cxx:100
 AliVtxTenderSupply.cxx:101