mercoledì, gennaio 31, 2007

Iscrizione esame

Ciao,
Volevo chiedere un chiarimento. Guardando sul SIFA ho notato che c'è un appello orale di informatica previsto per il giorno 16/02. Non vorrei aver capito male... l'esame non consisteva in una prova in laboratorio + orale da sostenersi interamente il giorno 02/02?. Se sì, è necessario iscriversi al SIFA? (non c'è l'appello... non vorrei che fosse scaduto il termine di iscrizione...)
Gli appelli non erano solamente il 02/02 e 02/03?
Grazie per i chiarimenti.

martedì, gennaio 30, 2007

TProfile e statistica

Mi e' stato chiesto come mai i fit sui TProfile si comportino "come ci si aspetta" solamente ad alta statistica: cio' e' dovuto al fatto che i TProfile mediano, bin per bin, gli eventi che vengono inseriti.
Se il numero di eventi per bin e' basso, inevitabilmente ad ogni media effettuata dal TProfile e' associata come errore una grande RMS. Questo implica che il fit, che si basa anche sugli errori associati ai punti, non riesce a trovare la miglior funzione possibile che faccia il fit dei vari punti.

lunedì, gennaio 22, 2007

ROOT (esercizi)

Ciao a tutti,
ho provato a risolvere un paio degli esercizi proposti da Pietro (qui). Ho caricato tra i file del gruppo i seguenti:
1. histoKri.C2. fitKri.C
Lasciate qualche commento!! (se volete)
Ciao ciao

mercoledì, gennaio 17, 2007

Friend functions

Ciao a tutti,
volevo postare un esempio di relazione di amicizia tra una classe e una funzione (esterna alla classe stessa) si tratta dell'overload dell'operator<<.
Per fare in modo che la classe complessi diventi amica dell'operator<< basta scrivere nel file .h:
/* operator<< */
friend std::ostream& operator<< (std::ostream &out, const complesso &original);

Alcune annotazioni:
1. Se pensate di mettere un const dopo la dichiarazione della funzione, ossia di scrivere
friend std::ostream& operator<< (std::ostream &out, const complesso &original) const;

per evitare che la funzione friend giochi qualche tiro mancino alla vostra classe, incapperete in un errore infatti la funzione non appartiene alla classe e allora non potrete usare il const.
2. Potete notare che il "const" è messo in un altro punto, ossia:
friend std::ostream& operator<< (std::ostream &out, const complesso &original);
questo vi permette di essere sicuri che operator<< style="font-style: italic;">.
In altre parole se scrivete all'interno dell'implementazione
original.Re = 5;
vi viene restituito un errore che vi dice che original è const e non può essere modificato
(se la funzione non fosse stata dichiarata friend l'errore sarebbe stato: "Re" è privato.)
3. La dichiarazione di amicizia va fatta nel file .h ma l'implementazione può essere fatta in un file qualsiasi (nel mio caso stream_operator.cc)
Potete trovare il file caricato nel gruppo.
Un altro esempio potrete trovarlo all'indirizzo:
http://www.bo.infn.it/alice/alice-doc/mll-doc/ali-note/node23.html
Insieme a vari appunti sul C++.

giovedì, gennaio 11, 2007

Overload dell'operator << (classe complessi)

Ciao a tutti,
qualche tempo fa, mentre si facevano i primi overload di operatori nelle classi "complesso" e "istogramma", era nata l'idea di overloadare (!!) l'operator <<
int main() {
complesso z(2,5);
std::cout <<>
...
}
In modo tale da visualizzare a schermo un numero complesso trattandolo come se fosse una variabile qualsiasi (float, double, int...).
Ho caricato nel gruppo il file complessiKri.cc (2) che contiene l'overload dell'operator <<.
Mi permetto di sottilineare alcune particolarità che ho notato:
1. l'overload è dichiarato nel seguente modo: std::ostream & operator<< (std::ostream & out, const complesso &original) quindi questo overload non è un metodo della classe complessi (altrimenti ci sarebbe stato scritto &complesso::operator<<).
2. Per questo motivo uno degli argomenti è proprio complesso &original che è il numero complesso che viene stampato a schemo.
3. operator<<> può accedere ai membri/metodi della classe che sono dichiarati "private" , infatti, ho dovuto utilizzare le funzioni Rez() e Imz() per ottenere la parte reale e immaginaria del numero, inoltre le ho dovute chiamare con la sintassi original.Rez() e original.Imz().
4. Per overloadare operator<< std::ostream, che è di un nuovo tipo rispetto a quelli inontrati finora.
Spero possa essere utile.
Ciao ciao
Cristian

Classe istogramma

Ciao a tutti,
Volevo dirvi che ho postato i files istogrammaKri.h, istogrammaKri.cc e istogrammaKri.cpp che sono rispettivamente l'header file, l'implementazione e il codice di test della classe istogramma.
Purtroppo... non funziona!! Mi viene segnalato un errore (Segmentation fault) all'interno del metodo "visualizza_verticale" che (teoricamente) dovrebbe visualizzarmi l'istogramma in verticale.
Non riesco proprio a trovare l'errore!
Grazie dell'aiuto.
Ciao ciao
Cristian
MODIFICA: Ho modificato il file istogrammaKri.cc (2) e istogrammaKri.cpp (2) per aggiungere l'overload dell'operator= (che mi ero dimenticato di fare). Ho caricato nei file del gruppo le nuove versioni.
Inserisco anche un file di testo contenente l'ultimo output che ho ottenuto (!!!!!) Istogramma_output.txt(Non capisco perxhè ora mi da problemi anche la funzione visualizza_orizzontale ?!?).
MODIFICA 23-Gen-07 : Ora il problema è stato risolto (da Enzo)! Potrete trovare la mia versione dell'istogramma tra i file del gruppo (istogrammaKri.cc (3)).