La “riforma” dell’IVA 2010. Il VAT PACKAGE Lineamenti generali 2.
ExclusiveDecayTools Package
description
Transcript of ExclusiveDecayTools Package
ExclusiveDecayTools ExclusiveDecayTools PackagePackage
Nicolò Magini
Firenze, 16 Gennaio 2003
Un po’ di storiaUn po’ di storia
Sviluppato originariamente a Pisa da Zhen Xie
Modificato successivamente da V. Ciulli, R. Ranieri e N. Magini
Utilizzato per la mia tesi di laurea e per gli studi di B-Physics nel DAQ-TDR
Adesso disponibile come pacchetto in bTauAnalysis
A che serve?A che serve?
Utilizzando come input oggetti ricostruiti con il consueto codice di ORCA, consente di ricostruire catene di decadimenti esclusivi
Nel caso di eventi MonteCarlo in formato HEPEVT effettua automaticamente l’associazione con la verità MonteCarlo
Classi per l’utenteClassi per l’utente
Particle Builder Channel UserCut
ParticleParticle
RawParticleRawParticle
ParticlParticlee
SimpleLockableSimpleLockable
In pratica è la classe RawParticle di In pratica è la classe RawParticle di COBRA, con l’aggiunta di alcune COBRA, con l’aggiunta di alcune funzionalità utili o necessarie per il funzionalità utili o necessarie per il pacchettopacchetto
P.S. Immagino che per una eventuale release ufficiale mi P.S. Immagino che per una eventuale release ufficiale mi verrà chiesto di cambiare il nome della classe …verrà chiesto di cambiare il nome della classe …
BuilderBuilder
Classe astratta: deve essere implementata dall’utente una classe concreta che eredita da Builder. Prende come input gli oggetti ricostruiti (nel costruttore)
Il metodo BuildBasicObj restituisce un vettore di Particle
Effettua l’associazione con il MonteCarlo
Esempio concreto: Esempio concreto: TkBuilderTkBuilder
Costruita con un qualsiasi vettore di RecTrack (ad es. da CombinatorialTrackFinder, PixelLine, o come più vi aggrada)
Se passiamo nel costruttore anche un vettore di SimTrack viene effettuata l’associazione con la verità MonteCarlo (TDRTrackAssociatorByHits)
Ma ci si potrebbe sbizzarrire a produrre un MuBuilder, un CaloBuilder, ecc …
ChannelChannel Si costruisce a partire da una stringa di testo
con i nomi PDG della particella madre e dei prodotti di decadimento (fino a 6)
Esempio: Channel bdchannel("B0->pi+,pi-") Il metodo Verify passando come argomento
uno UserCut e un numero di vector<Particle*>* pari al numero di prodotti di decadimento ricostruisce tutte le possibili combinazioni compatibili con la particella madre
UserCutUserCut
Altra classe astratta -> l’utente deve implementare le classi derivate con i tagli utili alla sua analisi nel metodo Cut
Ad esempio è implementata la classe CutMass che ritorna true se la massa ricostruita è entro una opportuna finestra intorno alla massa vera
Come si usa il Come si usa il pacchetto?pacchetto?
bb μ
Bs Ds π
πK+ K-
4) Tagli topologici fra Bs e μ
3) Minv tra i Ds ricostruiti e π
2) Id dei π e Minv con i
1) Id e Minv delle coppie di K
Come esempio utilizzerò il canale di Andrei effettuando una banale ricostruzione
Si parte passando al Si parte passando al Builder i normali Builder i normali
oggetti ricostruiti di oggetti ricostruiti di ORCAORCA
In questo caso, avendo effettuato una ricostruzione nel Tracker, si tratta di un vettore di RecTrack:
TkBuilder mytk(“BasicObj”, &GoodRecTracks, &GoodSimTracks)vector<Particle*>* TKBasicObj = mytk.BuildBasicObj()
In questo caso passiamo anche un vettore di sim tracks perché ci interessa l’associazione con la verità MonteCarlo
Poi si effettua la prima Poi si effettua la prima identificazione delle identificazione delle
particelleparticelleSi può fare con la classe Channel se chiamiamo il costruttore con un canale di decadimento “ad un corpo”
CutdEdX cutdEdx;
Channel aPi(“pi+->BasicObj”);vector<Particle*>* Pilist = aPi.Verify(&cutdEdX,TKBasicObj);
Channel aK(“K+->BasicObj”);vector<Particle*>* Klist = aK.Verify(&cutdEdX,TKBasicObj);
Channel aMu(“mu+->BasicObj”);vector<Particle*>* Mulist = aMu.Verify(&cutdEdX,TKBasicObj);
P.S. Qualora qualcuno se lo stia chiedendo, il taglio di dE/dx attualmente non fa assolutamente niente (return true), quindi si ottengono le stesse particelle in tutti e tre i casi, ma era solo per dare l’idea …
A questo punto A questo punto ricostuiamo le ricostuiamo le
combinazioni di massa combinazioni di massa invarianteinvariante
Channel aPhi (“phi->K-,K+”,&mysimevt);vector<Particle*>* Philist = aPhi.Verify(cutPhiMass,Klist,Klist);
Channel aDs (“D_s-->phi,pi-”,&mysimevt);vector<Particle*>* Dslist = aDs.Verify(cutDsMass,Philist,Pilist);
Channel aBs (“B_s0->D-s-,pi+”,&mysimevt);vector<Particle*>* Bslist = aBs.Verify(cutBsMass,Dslist,Klist);
1) Ad ogni step viene verificato che non ci sia sovrapposizione fra i prodotti di decadimento
2) Channel ricostruisce automaticamente anche il canale ottenuto per coniugazione di C
3) In questo caso si passa nel costruttore anche il puntatore al RawHepEvent simulato per propagare la verità di MonteCarlo dai prodotti di decadimento alla madre
Se volessimo effettuare Se volessimo effettuare dei tagli topologici?dei tagli topologici?
Possiamo costruire il Channel con un canale di decadimento “virtuale”
Channel Evchannel(“Event->Bs,mu”);vector<Particle*>* Eventlist = Evchannel.Verify(&cut,Bslist,Mulist);
Poiché Event non è un nome di particella nelle tabelle PDG, Channel si limita a trovare le combinazioni dei prodotti senza assegnare proprietà fisiche alla madre
A questo punto ho i miei vettori A questo punto ho i miei vettori di particelle ricostruite e posso di particelle ricostruite e posso
inserirli nelle ntuple, ecc …inserirli nelle ntuple, ecc …for (int i=0; i<Bslist->size(); i++){
Particle * bs = (*Bslist)[i];cout « “Bs pt = “ « bs->perp() « endl;Particle * ds = (*Bslist)[i]->getChild(0);Particle * pi1 = (*Bslist)[i]->getChild(1);
ecc. ecc. ecc …ecc. ecc. ecc …
E BUON DIVERTIMENTO CON E BUON DIVERTIMENTO CON L’ANALISI !!!L’ANALISI !!!
E se mi facesse comodo E se mi facesse comodo accedere ai RecObj originali che accedere ai RecObj originali che
hanno originato una certa hanno originato una certa Particle?Particle? Nel nostro esempio, mi servono le RecTrack
dei due K per ottenere le informazioni sul vertice di decadimento della
template class ParticleBase<P>
Semplicemente la Particle + il RecObj P
Il metodo baseObject() restituisce P
Stato del softwareStato del software
Disponibile su cvs nella head in bTauAnalysis/ExclusiveDecayTools
Testato con ORCA_6_3_0 su lxplus su eventi B0 π+π- e Bs Ds π
Compila anche su Sun Mancano i commenti alle classi
ToDoListToDoList
Risistemare e ottimizzare il codice Aggiornare la documentazione (attualmente
disponibile solo una CMS/IN DRAFT obsoleta sulla vecchia versione di Zhen)
Implementare altri Builder semplici (ad esempio L3MuBuilder come richiesto da Andrei)
Eventualmente in seguito, riorganizzare l’associazione con la MC Truth da un lato e i RecObj dall’altro